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 (main 메소드 내 객체 생성)
main 메소드의 마지막 줄에 new BufferedReaderWriterExam(); 옆에 달려 있습니다. BufferedReaderWriterExam 클래스의 인스턴스를 생성하여 생성자 내의 로직(파일 읽기 및 쓰기)을 실행하는 첫 번째 단계임을 표시합니다.//2 (생성자 선언)
public BufferedReaderWriterExam() 옆에 위치합니다. //3 (try 블록 + 예외처리)
try 구문 바로 위에 위치합니다. //7 (BufferedReader 선언 후 세미콜론)
BufferedReader를 선언한 뒤, 세미콜론(;)이 사용된 부분 옆에 위치합니다. //8 (BufferedWriter 선언)
BufferedWriter 선언부 옆에 달려 있습니다. FileWriter에 true를 전달하여 덮어쓰기가 아니라 이어쓰기(append)가 가능하도록 리소스를 생성하는 것을 알 수 있으며, try-with-resources 구문의 마지막 리소스임을 표시합니다.//5 (반복문 시작)
while(true) 반복문 옆에 위치합니다. br.readLine()으로 읽은 내용이 null이 될 때까지 반복하여 파일의 모든 줄을 출력하는 역할임을 나타냅니다.//6 (출력 구분선 및 문자 단위 출력 전)
//4 (catch 블록)
catch 블록 옆에 위치합니다. 각 주석 번호는 코드의 특정 부분에서 해당 작업의 순서나 역할을 명확히 하기 위해 작성되었으며, 전체적인 파일 입출력 과정의 흐름을 이해하는 데 도움을 줍니다.