jhhan의 블로그

BufferedReader & BufferedWriter 본문

JAVA

BufferedReader & BufferedWriter

jhhan000 2020. 6. 18. 15:23

이번에는 BufferedReader와 BufferedWriter에 대해서 알아보겠습니다.

 

이전 글에서 한번 다룬 적이 있긴 하지만, 그 때 너무 대충 적었습니다.

사실 이해도 조금 못하기도 했고, 약간 블로그를 무조건 적어야 한다 느낌으로 적느라 내용이 부실합니다.

이번에 좀 제대로 알고 제대로 적어보겠습니다.

 

두 클래스 모두 버퍼를 사용합니다.

BufferedReader는 자바에서 자주 사용하는 Scanner와 같다고 생각하면 됩니다.

대신 입력받는 값이 많을 때는 BufferedReader가 더 효율적이라는 것을 기억하시면 됩니다.

BufferedWriter는 자바에서 자주 사용하는 System.out.println과 비슷합니다.

역시 출력값이 많을 때는 BufferedWriter가 더 효율적입니다.

 

저는 파일입출력과 관련해서만 다룰 것입니다.

코드를 살펴보겠습니다.

public class Test {
    public static void main (String[] args) {
        try {
            FileReader fr = new FileReader("C:/sample/1.txt");
            FileWriter fw = new FileWriter("C:/sample/2.txt");
            BufferedReader br = new BufferedReader(fr);
            BufferedWriter bw = new BufferedWriter(fw);
            String line = "";
            while((line = br.readLine()) != null) {
//                System.out.print(br.read());
                System.out.println(line);
                bw.write(line);
                bw.newLine();
            }
            bw.write("\nThis is copied...");
            bw.flush();
            bw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Finished!");
    }
}

FileReader와 FileWriter가 사용되었는데, 각각 파일읽기와 파일쓰기에 관련된 클래스라고 생각하시면 됩니다.

  • FileReader fr = new FileReader("C:/sample/1.txt"); - 파일을 읽기 때문에 파일이 이 위치에 있어야하고, 이름도 동일해야 합니다.
  • FileWriter fw = new FileWriter("C:/sample/2.txt"); - 파일에 쓰기를 실행합니다.
  • 파일이 이 위치에 있으면 새로운 내용을 덮어쓰게 되고, 없다면 파일이 생성된 후 파일에 내용을 쓰게 됩니다.
  • BufferedReader br = new BufferedReader(fr); - 파일을 읽기 위한 선언입니다.
  • BufferedWriter bw = new BufferedWriter(fw); - 파일에 쓰기 위한 선언입니다.

while((line = br.readLine()) != null)

: readline()은 한 줄을 읽는 메소드 입니다.

파일을 계속 읽다 파일이 끝나면 그 때서야 null값을 반환합니다.

// 제가 주석 처리한 부분은 read() 메소드로 한글자만을 읽으며, 그 글자를 int값으로 변환합니다.

// 우리가 흔히 아는 ASCII 코드값으로 바꿔줍니다.

BufferedWriter와 관련된 메소드들을 따로 살펴보겠습니다.

  • write() : 파일에 작성하는 부분입니다. 따로 다음 줄로 넘어가지 않기 때문에 \n을 사용해야합니다.
  • newLine() : 아니면 이 메소드를 사용해서 다음 줄로 넘어가면 됩니다.
  • flush() : 버퍼에 남아있는 내용들을 모두 출력합니다. 꼭 필요한 과정입니다.
  • close() : 파일을 닫아줍니다.

마지막에 flush, close를 차례대로 해줘야 작성한 내용이 저장이 됩니다. 

 

결과를 보면

이런 결과창이 나오는 것을 확인할 수 있습니다.

또한 2.txt가 생성된 것을 확인할 수 있는데

위와 같이 작성되서 저장된 것을 확인할 수 있습니다.

 

BufferedReader, BufferedWriter를 사용해서 파일을 다룬다면

FileReader, FileWriter가 필수인 것 같습니다.

이 때 파일의 위치가 중요합니다.

파일의 경로를 정확히 안 다음 사용하셔야 오류가 나타나지 않을 것입니다.

 

생각날 때 정리하는 것이어서 내용은 좀 짧습니다.

이렇게 마치겠습니다.

'JAVA' 카테고리의 다른 글

자바와 스프링 그 사이(2)  (0) 2020.12.26
자바와 스프링 그 사이(1)  (0) 2020.12.16
Java의 정석을 시작하자(7)(2/11)  (0) 2020.02.14
Java의 정석을 시작하자(6)(2/10)  (0) 2020.02.14
Java의 정석을 시작하자(5)(2/8)  (0) 2020.02.14