Java에서 입출력 작업은 프로그램의 성능과 직결됩니다. 특히 대용량 데이터를 다룰 때는 입출력 속도가 중요하며, 이를 최적화하기 위해 Java는 다양한 클래스를 제공합니다. 이 중에서도 BufferedReader와 BufferedWriter는 텍스트 데이터를 효율적으로 읽고 쓰기 위해 버퍼링을 사용하는 대표적인 클래스입니다. 이번 글에서는 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의 장점
- 성능 향상
- 편리한 메서드 제공
- 자원 관리
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: 효율적인 입출력 처리