파일 입출력(Input/Output)은 Java 프로그램이 외부 파일과 데이터를 주고받는 데 사용하는 중요한 기능입니다. 이번 블로그에서는 Java에서 파일을 읽고 쓰는 방법을 단계별로 알아보고, 다양한 상황에 적용할 수 있는 실용적인 예제를 활용하여 알기 쉽게 작성 하였으니 참고가 되셨으면 좋겠습니다.
1. Java의 파일 입출력 기본 개념
Java는 파일 입출력을 위해 java.io
와 java.nio
패키지를 제공합니다.
2. 파일 쓰기 (Writing to a File)
파일에 데이터를 쓰는 방법에는 여러 가지가 있지만, 가장 간단한 방법 중 하나는 FileWriter
를 사용하는 것입니다.
FileWriter 예제
import java.io.*;
public class FileWriteExample {
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("example.txt");
writer.write("안녕하세요, Java 파일 입출력 예제입니다!\n");
writer.write("이 문장은 파일에 저장됩니다.");
writer.close();
System.out.println("파일 쓰기 완료.");
} catch (IOException e) {
System.out.println("파일 쓰기 중 오류 발생: " + e.getMessage());
}
}
}
출력: (example.txt 파일 내용)
안녕하세요, Java 파일 입출력 예제입니다!
이 문장은 파일에 저장됩니다.
BufferedWriter 사용: BufferedWriter
는 데이터를 버퍼에 저장한 뒤 한 번에 파일에 쓰므로 더 효율적입니다.
BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"));
writer.write("Hello, BufferedWriter!\n");
writer.close();
3. 파일 읽기 (Reading from a File)
파일을 읽는 가장 일반적인 방법은 FileReader
또는 BufferedReader
를 사용하는 것입니다.
BufferedReader 예제
import java.io.*;
public class FileReadExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
}
}
}
출력: (example.txt 파일 내용 출력)
안녕하세요, Java 파일 입출력 예제입니다!
이 문장은 파일에 저장됩니다.
4. 파일 복사 예제
파일 입출력 기능을 활용해 파일을 복사하는 방법도 구현할 수 있습니다.
import java.io.*;
public class FileCopyExample {
public static void main(String[] args) {
try (FileInputStream in = new FileInputStream("source.txt");
FileOutputStream out = new FileOutputStream("destination.txt")) {
int data;
while ((data = in.read()) != -1) {
out.write(data);
}
System.out.println("파일 복사 완료.");
} catch (IOException e) {
System.out.println("파일 복사 중 오류 발생: " + e.getMessage());
}
}
}
5. 최신 Java 기능 활용: Files
클래스
Java NIO의 Files
클래스는 파일 읽기, 쓰기, 복사 등 다양한 작업을 간단하게 수행할 수 있도록 도와줍니다.
import java.nio.file.*;
import java.io.IOException;
public class NIOWriteExample {
public static void main(String[] args) {
try {
Path path = Paths.get("example_nio.txt");
Files.write(path, "Hello, NIO!\nThis is an example.".getBytes());
System.out.println("파일 쓰기 완료.");
} catch (IOException e) {
System.out.println("NIO 파일 쓰기 중 오류 발생: " + e.getMessage());
}
}
}
import java.nio.file.*;
import java.io.IOException;
public class NIOReadExample {
public static void main(String[] args) {
try {
Path path = Paths.get("example_nio.txt");
String content = Files.readString(path);
System.out.println(content);
} catch (IOException e) {
System.out.println("NIO 파일 읽기 중 오류 발생: " + e.getMessage());
}
}
}
6. 파일 입출력 시 주의사항
try-catch
를 사용하여 예외를 처리합니다.close()
를 호출하여 자원을 해제하거나, try-with-resources
구문을 사용하여 자동으로 닫아야 합니다.결론
Java에서의 파일 입출력은 다양한 방식으로 구현할 수 있으며, java.io
와 java.nio
패키지를 통해 효율적인 파일 작업이 가능합니다. 프로젝트의 요구사항에 맞는 방법을 선택하여 안정적이고 성능이 뛰어난 파일 처리를 구현이 가능합니다.
다음 블로그는 Java의 JVM(Java Virtual Machine)의 메모리 관리와 성능 최적화에 대해 작성해보겠습니다. 감사합니다.
디딤돌 전세 대출을 받은 실제 경험 바탕으로 포스팅을 작성합니다. 디딤돌 대출은 생애최초, 신혼부부 대출로 나뉘어져…
현대 웹 애플리케이션에서는 보안이 중요한 요소이며, Spring Security는 강력한 인증 및 권한 관리 기능을 제공합니다.…
애플리케이션 개발에서 로깅(logging)과 모니터링(monitoring)은 필수적인 요소입니다. Java 애플리케이션이 실행되는 동안 발생하는 이벤트를 기록하고, 성능 및…
API(Application Programming Interface)는 애플리케이션 간 데이터를 주고받기 위한 인터페이스로, Java에서는 주로 RESTful API와 GraphQL API를…
디자인 패턴(Design Patterns)은 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 일반적인 해결책을 제공합니다. 특히, GoF(Gang…
Java의 애너테이션(Annotation)은 메타데이터를 코드에 추가하는 기능을 제공합니다. 이를 활용하면 코드의 가독성을 높이고, 프레임워크에서 런타임 처리를…