1. 핵심 정리
스트림
자바프로그래밍이 디스크에 접근하여 파일을 읽고 쓰는 통로를 스트림이라고 함
스트림은 단방향이며 입력과 출력을 위한 스트림이 각각 따로 존재
바이트 기반 스트림
파일 형식에 구애받지 않고 모든 파일을 읽고 쓸 수 있음
바이트 기반 입력 스트림의 최상위 클래스로 InputStream이 있으며,
바이트 기반 출력 스트림의 최상위 클래스로 OutputStream이 있음
문자 기반 스트림
문자를 기반으로 하기 때문에 텍스트 문서만을 읽고 쓸 수 있음
문자 기반 입력 스트림의 최상위 클래스로 Reader가 있으며 문자 기반 출력 스트림의 최상위 클래스로 Writer가 있음
기반 스트림과 보조 스트림
- 기반 스트림 : 대상에 직접 자료를 읽고 쓰는 스트림
- 보조 스트림 : 직접 읽고 쓰는 기능 없이 기반 스트림에 추가로 사용할 수 있는 스트림
File 클래스
파일 및 폴더에 대한 정보들을 파악하기 위한 메서드들로 구성되어 있으며
물리적으로 저장되어 있는 파일이나 폴더를 다루기 위해 다양한 메서드들이 있음
직렬화 / 역직렬화
자바 시스템 내부에서 사용하는 객체나 데이터를 외부의 시스템에서 사용할 수 있도록
바이트 단위의 데이터로 변환시키는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술
객체를 데이터로 변환하는 것을 직렬화,
데이터화 된 것을 다시 객체로 변환하는 것을 역직렬화 라고 함
2. 응용 문제
Q1. 다음 중 스트림에 관한 설명으로 틀린 것은 무엇일까요?
- 데이터를 읽어들이는 것을 입력 스트림이라고 합니다.
- 데이터를 저장하는 것을 출력 스트림이라고 합니다.
- 하나의 스트림으로 입력과 출력을 모두 제어할 수 있습니다.
- 스트림은 바이트 기반 스트림과 문자 기반 스트림으로 나눌 수 있습니다.
A1. 3
Q2. 이미지 파일을 복사하려고 합니다. 다음중 가장 적합한 스트림은 무엇일까요?
- FileInputStream, FileWriter
- FileReader, FileWriter
- FileInputStream, FileOutputStream
- FileReader, FileOutputStream
A3. 3
Q3. 다음은 보조 스트림에 대한 설명입니다. 문장이 맞으면 O표, 틀리면 X표 하세요.
- 보조 스트림은 다른 보조 스트림과 중첩하여 사용할 수 있습니다.(O)
- 보조 스트림은 자체적으로 입출력을 수행할 수 있습니다.(X)
- 성능 향상 기반 보조 스트림 중에서 바이트 기반 스트림에는 BufferdInputStream과 BufferedOutputStream이
있으며 문자 기반 스트림에는 BufferedReader와 BufferedWriter가 있습니다.(O) - 문자 기반 스트림으로 최상위 스트림은 Reader 입니다.(O)
Q4. 다음 코드의 빈 칸( ■■■■ )을 완성해 보세요.
package section19;
import java.io.FileInputStream;
public class FileReadExample {
public static void main(String[] args) {
FileInputStream in=null;
try {
in=new FileInputStream("read.txt");
int read=0;
while(■■■■) {
read=in.read();
System.out.println((char)read);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if(in!=null) {
■■■■
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
A4.
package section19;
import java.io.FileInputStream;
public class FileReadExample {
public static void main(String[] args) {
FileInputStream in=null;
try {
in=new FileInputStream("read.txt");
int read=0;
while((read=in.read())!=-1) {
read=in.read();
System.out.println((char)read);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if(in!=null) {
in.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
}
2024.07.30
'JAVA > JAVA복습(멘토씨리즈 자바)' 카테고리의 다른 글
| [JAVA복습] 18. 스레드 (0) | 2024.07.29 |
|---|---|
| [JAVA복습] 17. 람다식 (0) | 2024.07.29 |
| [JAVA복습] 16. 컬렉션 프레임워크 (0) | 2024.07.27 |
| [JAVA복습] 15. 기본 API 클래스 (0) | 2024.07.27 |
| [JAVA복습] 14. 예외처리 (0) | 2024.07.25 |