본문 바로가기
JAVA/JAVA복습(멘토씨리즈 자바)

[JAVA복습] 19. 파일 입출력

by ssunooo 2024. 7. 30.

 

 

1. 핵심 정리

 

스트림

자바프로그래밍이 디스크에 접근하여 파일을 읽고 쓰는 통로를 스트림이라고 함

스트림은 단방향이며 입력과 출력을 위한 스트림이 각각 따로 존재

 

바이트 기반 스트림

파일 형식에 구애받지 않고 모든 파일을 읽고 쓸 수 있음

바이트 기반 입력 스트림의 최상위 클래스로 InputStream이 있으며,

바이트 기반 출력 스트림의 최상위 클래스로 OutputStream이 있음

 

문자 기반 스트림

문자를 기반으로 하기 때문에 텍스트 문서만을 읽고 쓸 수 있음

문자 기반 입력 스트림의 최상위 클래스로 Reader가 있으며 문자 기반 출력 스트림의 최상위 클래스로 Writer가 있음

 

기반 스트림과 보조 스트림

  • 기반 스트림 : 대상에 직접 자료를 읽고 쓰는 스트림
  • 보조 스트림 : 직접 읽고 쓰는 기능 없이 기반 스트림에 추가로 사용할 수 있는 스트림

 

File 클래스

파일 및 폴더에 대한 정보들을 파악하기 위한 메서드들로 구성되어 있으며

물리적으로 저장되어 있는 파일이나 폴더를 다루기 위해 다양한 메서드들이 있음

 

직렬화 / 역직렬화

자바 시스템 내부에서 사용하는 객체나 데이터를 외부의 시스템에서 사용할 수 있도록

바이트 단위의 데이터로 변환시키는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술

객체를 데이터로 변환하는 것을 직렬화,

데이터화 된 것을 다시 객체로 변환하는 것을 역직렬화 라고 함

 


 

2. 응용 문제

 

Q1. 다음 중 스트림에 관한 설명으로 틀린 것은 무엇일까요?

  1. 데이터를 읽어들이는 것을 입력 스트림이라고 합니다.
  2. 데이터를 저장하는 것을 출력 스트림이라고 합니다.
  3. 하나의 스트림으로 입력과 출력을 모두 제어할 수 있습니다.
  4. 스트림은 바이트 기반 스트림과 문자 기반 스트림으로 나눌 수 있습니다.

A1. 3

 


 

Q2. 이미지 파일을 복사하려고 합니다. 다음중 가장 적합한 스트림은 무엇일까요?

  1. FileInputStream, FileWriter
  2. FileReader, FileWriter
  3. FileInputStream, FileOutputStream
  4. 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