buffer와 load

moon.kick·2025년 3월 6일

package ex0306;

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

public class BufferedReaderWriterExam { //0

public BufferedReaderWriterExam() { //2
	//문자단위파일읽기 ->버퍼추가
	//3 트라이 +예외처리하기  
	try(BufferedReader br = 
			new BufferedReader(new FileReader("src/ex0306/read.txt")); //7 세미컬론
			
			BufferedWriter bw =  //덮어쓰기됨
			new BufferedWriter(new FileWriter("src/ex0306/write.txt", true))){ //8 
			
			
	 
		/*
		while(true) {
			
		int i = br.read(); //한문자씩읽기
		if(i==-1)break;
	System.out.println(i+","+(char)i);
		} */
		//한줄읽기
		while(true) {  //5 반복문 
			String line = br.readLine(); //읽을게 없으면 null, null전까지 돌리기
			if(line==null)break;
			System.out.println(line); 
		}
		//6
		System.out.println("-----------------------------------------문자단위");
		bw.write(65);
		bw.write("곧");
		bw.newLine();
		bw.write("쉬어요");
		bw.flush();
		//4 캐치
	}catch (Exception e) {
		e.printStackTrace();
	}
				
	}
	


public static void main(String[] args) {
	new BufferedReaderWriterExam(); //1
}

}

주석 //을 보고 //1 //2 //3 //4 ~ 순서대로 설명해줘~
1. //0 (클래스 선언)

  • 이 주석은 BufferedReaderWriterExam 클래스 선언 옆에 위치합니다.
  • 클래스의 시작을 나타내며, 이 클래스 안에 파일 읽기/쓰기를 위한 메소드와 생성자가 포함되어 있음을 알 수 있습니다.
  1. //1 (main 메소드 내 객체 생성)

    • main 메소드의 마지막 줄에 new BufferedReaderWriterExam(); 옆에 달려 있습니다.
    • 프로그램 실행 시, BufferedReaderWriterExam 클래스의 인스턴스를 생성하여 생성자 내의 로직(파일 읽기 및 쓰기)을 실행하는 첫 번째 단계임을 표시합니다.
  2. //2 (생성자 선언)

    • 생성자 선언부 public BufferedReaderWriterExam() 옆에 위치합니다.
    • 객체가 생성될 때 호출되는 생성자임을 나타내며, 이곳에서 파일 입출력 작업이 시작됩니다.
  3. //3 (try 블록 + 예외처리)

    • 생성자 내부에서 파일 입출력 코드를 감싸는 try 구문 바로 위에 위치합니다.
    • try-with-resources 구문을 사용하여 리소스를 자동으로 닫고, 예외 발생 시 catch 블록에서 처리함을 강조합니다.
  4. //7 (BufferedReader 선언 후 세미콜론)

    • try-with-resources 구문 내에서 BufferedReader를 선언한 뒤, 세미콜론(;)이 사용된 부분 옆에 위치합니다.
    • 여러 리소스를 한 블록에서 선언할 때 각 리소스 선언 사이에 세미콜론이 필요하다는 점을 강조하는 주석입니다.
  5. //8 (BufferedWriter 선언)

    • BufferedWriter 선언부 옆에 달려 있습니다.
    • 여기서 FileWritertrue를 전달하여 덮어쓰기가 아니라 이어쓰기(append)가 가능하도록 리소스를 생성하는 것을 알 수 있으며, try-with-resources 구문의 마지막 리소스임을 표시합니다.
  6. //5 (반복문 시작)

    • 파일에서 한 줄씩 읽어들이기 위한 while(true) 반복문 옆에 위치합니다.
    • br.readLine()으로 읽은 내용이 null이 될 때까지 반복하여 파일의 모든 줄을 출력하는 역할임을 나타냅니다.
  7. //6 (출력 구분선 및 문자 단위 출력 전)

    • while 반복문이 끝난 후, 구분선 출력 직전에 위치합니다.
    • 파일에서 읽은 내용을 출력한 후, "-----------------------------------------문자단위"라는 구분선을 출력함으로써 이후에 진행될 파일 쓰기 작업과 읽기 작업의 구분을 명확히 합니다.
  8. //4 (catch 블록)

    • try 구문에 대한 예외 처리를 위한 catch 블록 옆에 위치합니다.
    • 파일 입출력 중 발생할 수 있는 예외를 잡아내어, 예외 정보를 출력하는 역할을 수행함을 나타냅니다.

각 주석 번호는 코드의 특정 부분에서 해당 작업의 순서나 역할을 명확히 하기 위해 작성되었으며, 전체적인 파일 입출력 과정의 흐름을 이해하는 데 도움을 줍니다.

profile
@mgkick

0개의 댓글