안녕하세요! 이번 포스팅에서는 자바(Java) 프로그래밍 언어에서 파일 입출력 처리 방법에 대해 알아보도록 하겠습니다. 파일 입출력은 데이터 관리와 처리에 매우 중요한 기능이기 때문에 많은 프로그래머가 필수적으로 익혀야 할 부분입니다. 이번 글에서는 파일 쓰기, 읽기, 추가하는 다양한 방법을 함께 살펴보겠습니다.

파일 쓰기 방법
자바에서는 파일에 데이터를 쓰는 여러 가지 방법이 존재합니다. 그 중에서도 자주 사용되는 두 가지 방식을 소개하겠습니다: BufferedWriter와 Files.write() 메서드입니다.
BufferedWriter를 이용한 파일 쓰기
BufferedWriter는 메모리에 데이터를 버퍼에 저장한 후, 일정량이 모이면 파일에 한 번에 기록하는 방식으로 성능을 개선합니다. 일반적으로 여러 줄의 데이터를 한 번에 기록하거나, 파일을 자주 열고 다룰 때 유용합니다. 아래는 BufferedWriter를 사용한 파일 쓰기 예제입니다:
public static void main(String[] args) {
String filePath = "D:\\hanker\\test.txt";
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write("첫 번째 줄입니다.\n");
writer.write("BufferedWriter를 사용한 예제입니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
위의 코드를 실행하면 지정한 경로에 “test.txt” 파일이 생성되며, 두 줄의 텍스트가 기록됩니다.
Files.write()를 이용한 파일 쓰기
Files.write() 메서드는 간단한 방식으로 파일에 데이터를 한 번에 기록할 수 있습니다. 주로 소량의 데이터를 처리할 때 편리하게 사용할 수 있습니다. 다음 예제를 통해 이해해 보겠습니다:
public static void main(String[] args) {
String filePath = "D:\\hanker\\test.txt";
try {
Files.write(Paths.get(filePath), "첫 번째 줄입니다.\nFiles.write() 메서드 사용 예제".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
이 코드를 실행하면 “test.txt” 파일에 두 가지 내용이 올바르게 기록됩니다.
파일 읽기 방법
이제 파일에서 데이터를 읽는 방법에 대해 알아보겠습니다. 역시 BufferedReader와 Files.readAllLines() 메서드 두 가지를 살펴보겠습니다.
BufferedReader를 이용한 파일 읽기
BufferedReader는 파일의 내용을 한 줄씩 읽어오는 기능을 제공합니다. 이 방법은 파일에서 데이터를 처리할 때 유용하며, 아래 예제를 통해 그 사용법을 살펴보겠습니다:
public static void main(String[] args) {
String filePath = "D:\\hanker\\test.txt";
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
int lineNumber = 1;
while ((line = reader.readLine()) != null) {
System.out.println("라인 " + lineNumber + ": " + line);
lineNumber++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
위의 코드 실행 결과로, “test.txt” 파일의 모든 줄이 콘솔에 출력됩니다.
Files.readAllLines()를 이용한 파일 읽기
Files.readAllLines() 메서드는 파일의 모든 줄을 읽어 리스트 형태로 반환합니다. 전체 내용을 한 번에 처리할 수 있는 점에서 유용합니다. 다음은 이 메서드를 사용한 예제입니다:
public static void main(String[] args) {
String filePath = "D:\\hanker\\test.txt";
try {
List lines = Files.readAllLines(Paths.get(filePath));
for (int i = 0; i < lines.size(); i++) {
System.out.println("라인 " + (i + 1) + ": " + lines.get(i));
}
} catch (IOException e) {
e.printStackTrace();
}
}
해당 코드를 실행하면 파일 내의 모든 내용이 차례로 출력됩니다.
파일에 내용 추가하기
프로그램을 작성하다 보면 기존 파일에 내용을 추가하고 싶을 때가 있습니다. 이 경우에는 파일을 추가 모드로 열어야 합니다. 아래 예제를 통해 이 방식에 대해 알아보겠습니다:
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("c:/out.txt");
for (int i = 1; i < 11; i++) {
String data = i + " 번째 줄입니다.\r\n";
fw.write(data);
}
fw.close();
FileWriter fw2 = new FileWriter("c:/out.txt", true); // 추가 모드로 파일 열기
for (int i = 11; i < 21; i++) {
String data = i + " 번째 줄입니다.\r\n";
fw2.write(data);
}
fw2.close();
}
이 예제를 실행하면 "out.txt" 파일의 기존 내용 뒤에 새로운 데이터가 추가됩니다.

결론
자바에서 파일 입출력 기능은 데이터 저장 및 관리를 위해 필수적입니다. BufferedWriter와 Files.write(), BufferedReader와 Files.readAllLines() 메서드를 적절하게 활용하면 다양한 방식으로 파일을 처리할 수 있습니다. 이러한 기법을 익혀 두면, 더 효율적으로 데이터를 관리하는 데 큰 도움이 될 것입니다.
이번 포스팅이 자바에서 파일 입출력의 이해를 높이는 데 도움이 되셨길 바랍니다. 계속해서 다양한 자바의 기능에 대해 알아보는 시간을 가져보세요!
자주 찾으시는 질문 FAQ
자바에서 파일 쓰기를 어떻게 하나요?
자바에서는 BufferedWriter 또는 Files.write() 메서드를 사용하여 파일에 데이터를 기록할 수 있습니다. 두 가지 방법 모두 간단하게 데이터를 저장할 수 있는 기능을 제공합니다.
파일에서 데이터를 읽는 방법은 무엇인가요?
파일에서 정보를 읽기 위해서는 BufferedReader나 Files.readAllLines() 메서드를 활용할 수 있습니다. 이들 방법은 파일의 내용을 효율적으로 가져올 수 있도록 도와줍니다.
기존 파일에 내용을 추가하려면 어떻게 해야 하나요?
파일에 기존 내용을 유지하면서 새로운 정보를 추가하려면, FileWriter를 추가 모드(true)로 열어야 합니다. 이렇게 하면 기존 내용 뒤에 새로운 데이터가 잘 추가됩니다.
파일 입출력에서 예외 처리는 어떻게 해야 하나요?
파일 입출력 작업에서는 IOException을 처리하는 것이 중요합니다. try-catch 블록을 사용하여 예외 발생 시 적절히 대처할 수 있습니다.