Maximize Your Potential

BackEnd

Java의 BufferedReader와 BufferedWriter: 효율적인 입출력 처리

maxworld 2024. 10. 17. 21:04
728x90
반응형

 

Java의 BufferedReader와 BufferedWriter: 효율적인 입출력 처리

Java에서 입출력 작업은 프로그램의 성능과 직결됩니다. 특히 대용량 데이터를 다룰 때는 입출력 속도가 중요하며, 이를 최적화하기 위해 Java는 다양한 클래스를 제공합니다. 이 중에서도 BufferedReader와 BufferedWriter는 텍스트 데이터를 효율적으로 읽고 쓰기 위해 버퍼링을 사용하는 대표적인 클래스입니다. 이번 글에서는 BufferedReader와 BufferedWriter의 사용법과 장점에 대해 자세히 알아보겠습니다.

  

Java의 BufferedReader와 BufferedWriter: 효율적인 입출력 처리

BufferedReader: 효율적인 텍스트 읽기

BufferedReader는 문자 입력 스트림에서 텍스트를 읽기 위한 클래스로, 버퍼링을 통해 성능을 최적화합니다. 일반적으로 InputStreamReader와 함께 사용되며, 파일, 콘솔, 소켓 등 다양한 입력 소스에서 데이터를 읽을 수 있습니다.

주요 메서드와 사용법

BufferedReader의 주요 메서드로는 read(), readLine(), close() 등이 있습니다. read() 메서드는 한 문자를 읽고, readLine() 메서드는 한 줄을 읽습니다. close() 메서드는 스트림을 닫아 자원을 해제합니다.

다음은 BufferedReader를 사용하여 콘솔에서 입력을 읽는 예제입니다.


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class BufferedReaderExample {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter something: ");
            String input = reader.readLine();
            System.out.println("You entered: " + input);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}​



이 예제에서는 BufferedReader와 InputStreamReader를 사용하여 사용자 입력을 읽고, 읽은 내용을 출력합니다. readLine() 메서드를 사용하여 한 줄씩 읽기 때문에 효율적입니다.

BufferedWriter: 효율적인 텍스트 쓰기

BufferedWriter는 문자 출력 스트림에서 텍스트를 쓰기 위한 클래스로, 버퍼링을 통해 쓰기 성능을 향상시킵니다. 일반적으로 OutputStreamWriter와 함께 사용되며, 파일, 콘솔, 소켓 등 다양한 출력 대상에 데이터를 쓸 수 있습니다.

주요 메서드와 사용법

BufferedWriter의 주요 메서드로는 write(), newLine(), flush(), close() 등이 있습니다. write() 메서드는 문자열을 쓰고, newLine() 메서드는 새 줄을 추가합니다. flush() 메서드는 버퍼에 남아있는 데이터를 모두 출력 스트림으로 내보내며, close() 메서드는 스트림을 닫아 자원을 해제합니다.

다음은 BufferedWriter를 사용하여 콘솔에 텍스트를 출력하는 예제입니다.


import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;

public class BufferedWriterExample {
    public static void main(String[] args) {
        try {
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
            writer.write("Hello, World!");
            writer.newLine();
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}​

이 예제에서는 BufferedWriter와 OutputStreamWriter를 사용하여 문자열을 출력합니다. write() 메서드로 문자열을 쓰고, newLine() 메서드로 새 줄을 추가하며, flush() 메서드로 버퍼를 비웁니다.

BufferedReader와 BufferedWriter의 장점

  1. 성능 향상
  2. 편리한 메서드 제공
  3. 자원 관리
다음은 BufferedReader와 BufferedWriter를 사용하여 파일을 읽고 쓰는 예제입니다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileIOExample {
    public static void main(String[] args) {
        String inputFile = "input.txt";
        String outputFile = "output.txt";

        try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
             BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {

            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}​

이 예제에서는 BufferedReader를 사용하여 input.txt 파일을 한 줄씩 읽고, BufferedWriter를 사용하여 output.txt 파일에 씁니다. try-with-resources 구문을 사용하여 스트림을 자동으로 닫습니다.

 

BufferedReader와 BufferedWriter는 Java에서 효율적인 텍스트 입출력 작업을 위해 제공되는 강력한 도구입니다. 버퍼링을 통해 성능을 향상시키고, 편리한 메서드를 제공하여 코드를 단순화할 수 있습니다. 파일, 콘솔, 네트워크 소켓 등 다양한 입출력 소스와 대상에서 사용할 수 있어 매우 유용합니다.

Java 개발자로서 입출력 성능을 최적화하고 싶다면, BufferedReader와 BufferedWriter의 사용법을 익혀두는 것이 좋습니다. 이를 통해 보다 효율적이고 유지보수하기 쉬운 코드를 작성할 수 있을 것입니다.

 

Java의 BufferedReader와 BufferedWriter: 효율적인 입출력 처리