Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[5주차] 84. 문자스트림(FileReader / FileWriter)에 버퍼추가=> BufferedReader/BufferedWriter - 파일에서 한 줄 씩 읽기 혹은 저장 본문

K-DigitalTraining 강의/1. Java

[5주차] 84. 문자스트림(FileReader / FileWriter)에 버퍼추가=> BufferedReader/BufferedWriter - 파일에서 한 줄 씩 읽기 혹은 저장

이대곤 2022. 6. 7. 15:24

* 1차 스트림을 FileReader / FileWriter 로 사용하였고 2차 스트림을 BufferedReader / BufferedWriter 로 사용 후
  BufferedReader 의 readLine() 매소드를 이용해 한줄 씩 입력받는것이 핵심임.

 

* FileWriter/BufferedWriter 둘의 차이는 그저 버퍼 유무에 따른 성능차이(공통점은 둘 다 파일을 작성하기 위해 사용됨)

  FileWriter

  FileWriter는 Java로 파일을 작성하는 가장 간단한 방법입니다. 파일에 int, byte array, String을 쓰기 위한 오버로드된
  write 메소드를 제공합니다. FileWriter를 사용하여 문자열 또는 바이트 배열의 일부를 쓸 수도 있습니다. FileWriter는
  파일에 직접 쓰기 때문에 쓰기 횟수가 적을 때만 사용해야 합니다.

  BufferedWriter

  BufferedWriter는 FileWriter와 거의 비슷하지만 내부 버퍼를 사용하여 파일에 데이터를 씁니다. 따라서 쓰기 작업의
  수가 많을수록 실제 IO 작업은 적고 성능은 더 좋습니다. 쓰기 작업의 수가 많을 때 BufferedWriter를 사용해야 합니다.

파일에서 한줄 씩 읽어들이는 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Ex11_08_Buffer {
	public static void main(String[] args) {
		
		FileWriter fw = null;
		FileReader fr = null;
		
		BufferedWriter bw = null;
		BufferedReader br = null;
		
		
		try {
			fw =new FileWriter("write2.txt"); // 파일이 존재하지 않는 경우 new IOException()
			bw = new BufferedWriter(fw);
			
			bw.write("즐거운 자바수업~");
			//bw.write("\n");
			bw.newLine();		// 줄바꿈
			bw.write("재미있는 자바수업~");
			bw.newLine();
			bw.write("신나는 자바수업~");
			
			//bw.close();
			bw.flush();
			
			fr = new FileReader("write2.txt"); // 경로가 존재하지 않는 경우 new FileNotFoundException()
			br = new BufferedReader(fr);
			
			int i;
			
//			while((i = fr.read()) != -1) {	// read 메소드는 아스키 코드로 한 글자씩 읽어옴
//				System.out.println((char)i);
//			}
			
			String line;
			
			while((line = br.readLine()) != null) {	// 한 줄씩 읽어들이는 메소드, 한 줄씩 읽을땐 파일의 끝이 -1이 아니라 null
				System.out.println("line:" + line);
			}
			 
			
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bw.close(); // 스트림을 닫는 기능이지만, 이걸 해줘야 버퍼에 있는 문자열을 파일로 내보낼 수 있다.
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
	}
}
Comments