
Java
I/O
- 직접 파일에서 1byte씩 읽어오는 스트림
- new FileInputStream("경로/파일명");
- new FileInputStream(new File("경로/파일명"));
- 모든 InputStream과 연결해서 사용하는 보조스트림, InputStream의 읽기 속도를 향상시킨다.
- new BufferedInputStream(다른 InputStream);
OutputStream
FileOutputStream
- 직접 파일에 1byte씩 출력하는 스트림
- new FileOutputStream("경로/파일명");
- new FileOutputStream(new File("경로/파일명"));
BufferedOutputStream
- 모든 OutputStream과 연결해서 사용하는 보조스트림, OutputStream의 출력 속도를 향상시킨다.
- new BufferedOutputStream(다른 OutputStream);
PrintStream
- 시스템의 표준출력 스트림으로 사용되는 스트림, System.out과 System.err 정적변수에 각각 연결되어 있다.
- print(), println()이 중복정의되어 있다.
Reader
FileReader
- 직접 파일에서 1글자씩 읽어오는 스트림
- new FileReader("경로/파일명");
- new FileReader(new File("경로/파일명"));
BufferedReader
- 모든 Reader와 연결해서 사용하는 보조스트림, 텍스트를 1줄씩 읽어오는 readLine() 메소드가 있다.
- new BufferedReader(다른 Reader);
- 브릿지스트림, InputStream과 연결할 수 있는 보조스트림
- new InputStreamReader(다른 InputStream);
Writer
FileWriter
- 직접 파일에 1글자씩 읽어오느 스트림
- new FileWriter("경로/파일명")
- new FileWriter(new File("경로/파일명"));
PrintWriter
- 텍스트 출력의 만능 스트림
- print(), println()이 중복정의되어 있다. 자동으로 줄바꿈문자 추가, auto-flush 기능 체공
- new PrintWriter("경로/파일명");
- new PrintWriter(다른 InputStream);
- new PrintWriter(다른 Writer)
OutputStreamWriter
- 브릿지스트림, OutputStream과 연결할 수 있는 보조스트림
- new OutputStreamWriter(다른 OutputStream);
package day3;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
public class ApacheIOApp {
public static void main(String[] args) throws IOException {
File src = new File("src/day3/song.mp4");
File dest = new File("src/day3/song_copy.mp4");
FileUtils.copyFile(src, dest);
URL url = new URL("https://img2.daumcdn.net/thumb/R658x0.q70/?fname=https://t1.daumcdn.net/news/202104/21/newsen/20210421211644612vrek.jpg");
InputStream in = url.openStream();
FileOutputStream out = new FileOutputStream("src/day3/photo.jpg");
IOUtils.copy(in, out);
}
}
package day3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class BridgeStreamApp {
public static void main(String[] args) throws IOException {
URL url = new URL("https://sample-videos.com/csv/Sample-Spreadsheet-100-rows.csv");
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
String text = null;
while ((text = reader.readLine()) != null) {
System.out.println(text);
}
}
}
package day3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class StandardInputApp {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
System.out.print("메세지를 입력하세요 : ");
String text = reader.readLine();
System.out.println("입력 메세지 : " + text);
}
}