대상 파일: a.pptx
사본 이름: d.pptx
▼정답
package IOStream;
import java.io.*;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("대상 파일: ");
String src = sc.nextLine();
System.out.print("사본 이름: ");
String dst = sc.nextLine();
try (OutputStream out = new FileOutputStream(dst); InputStream in = new FileInputStream(src)) {
int data;
while (true) {
data = in.read();
if (data == -1)
break;
out.write(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
▼정답
보조 스트림 = 필터 스트림
스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있는 스트림.
보완하는 용도이기 때문에 실제 데이터를 주고 받지 않고, 데이터를 입출력할 수 있는 기능은 없다.
DataOutputStream > BufferedOutputStream > FileOutputStream의 순서로 사용한다.
바이트 기반 보조 스트림
입력스트림 | 출력스트림 | 설명 |
---|---|---|
FilterInputStream | FilterOutputStream | 필터를 이용한 입출력 처리 |
BufferedInputStream | BufferedOutputStream | 버퍼를 이용한 입출력 성능향상 |
DataInputStream | DataOutputStream | int, float과 같은 기본형 단위로 데이터를 처리하는 기능 |
ObjectInputStream | ObjectOutputStream | 데이터를 객체 단위로 읽고 쓰는데 사용. 주로 파일일을 이용하며 객체 직렬화와 관련된다. |
문자 기반 보조 스트림
입력스트림 | 출력스트림 | 설명 |
---|---|---|
InputStreamReader | OutputStreamWriter | 바이트 기반 스트림을 문자 기반 스트림으로 연결 |
BufferedReader | BufferedWriter | 버퍼를 이용한 입출력 효율 향상 |
BufferedReader : readLine()을 사용하면 데이터를 라인 단위로 읽을 수 있다.
BufferedWriter : newLine()을 사용하면 줄바꿈을 할 수 있다.
▼정답
문자를 입출력할 때에는 약간의 데이터 수정이 필요!
그래서 자바에서는 '문자 스트림' 이라는 것을 별도로 지원(이 스트림은 데이터 수정을 자동화 해준다.)
・바이트 스트림 :
①CPU가 알아듣는 파일 (.exe)
②Byte 단위로 읽고 출력하는 스트림
→ OutputStream(=Writer out)
・문자 스트림 :
①개발자가 알아듣는 파일 (.java / .txt)
②문자 단위로 읽고 출력하는 스트림
→ Writer(=OutputStream out)