Java에서는 파일을 읽고 쓰는 기능을 제공하는 파일 입출력(IO, Input/Output) API를 지원합니다. 파일 입출력은 데이터를 저장하고 불러오는 데 필수적인 기능이며, Java에서는
File, FileReader, FileWriter, BufferedReader, BufferedWriter, FileInputStream, FileOutputStream
등의 클래스를 활용하여 파일을 다룰 수 있습니다.
1. Java 파일 입출력 개념
파일 입출력은 크게 **문자 기반(Reader/Writer)**과 **바이트 기반(InputStream/OutputStream)**으로 나뉩니다.
- 문자 스트림(Reader/Writer): 텍스트 데이터를 처리할 때 사용 (FileReader, FileWriter 등)
- 바이트 스트림(InputStream/OutputStream): 이미지, 오디오, 비디오 파일 등 바이너리 데이터를 처리할 때 사용 (FileInputStream, FileOutputStream 등)
2. 파일 생성 및 정보 확인
파일을 생성하고 해당 파일의 정보를 확인할 수 있습니다.
✅ 파일 생성 예제 (``** 클래스 사용)**
import java.io.File;
import java.io.IOException;
public class FileCreateExample {
public static void main(String[] args) {
try {
File file = new File("example.txt");
if (file.createNewFile()) {
System.out.println("파일이 생성되었습니다: " + file.getName());
} else {
System.out.println("파일이 이미 존재합니다.");
}
} catch (IOException e) {
System.out.println("파일 생성 중 오류 발생: " + e.getMessage());
}
}
}
출력 결과 (파일이 존재하지 않을 경우):
파일이 생성되었습니다: example.txt
🔹 File 클래스는 파일 생성, 삭제, 속성 확인 등의 작업을 수행할 수 있습니다.
3. 파일에 데이터 쓰기
파일에 데이터를 저장하려면 `` 또는 **BufferedWriter**를 사용할 수 있습니다.
✅ 파일 쓰기 예제 (``)
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("example.txt");
writer.write("Hello, Java 파일 입출력!");
writer.close();
System.out.println("파일에 데이터가 저장되었습니다.");
} catch (IOException e) {
System.out.println("파일 쓰기 중 오류 발생: " + e.getMessage());
}
}
}
출력 결과:
파일에 데이터가 저장되었습니다.
🔹 FileWriter는 파일이 존재하지 않으면 자동으로 생성하며, 기존 파일에 데이터를 덮어씁니다.
✅ 버퍼를 사용한 파일 쓰기 (``)
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriteExample {
public static void main(String[] args) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("example.txt"));
writer.write("안녕하세요, BufferedWriter를 사용하여 파일을 작성합니다.");
writer.newLine(); // 줄바꿈 추가
writer.write("Java 파일 입출력은 쉽습니다!");
writer.close();
System.out.println("파일에 데이터가 저장되었습니다.");
} catch (IOException e) {
System.out.println("파일 쓰기 중 오류 발생: " + e.getMessage());
}
}
}
🔹 BufferedWriter는 FileWriter보다 더 효율적인 파일 쓰기 성능을 제공합니다.
4. 파일 읽기
파일에서 데이터를 읽을 때는 `` 또는 **BufferedReader**를 사용할 수 있습니다.
✅ 파일 읽기 예제 (``)
import java.io.FileReader;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try {
FileReader reader = new FileReader("example.txt");
int character;
while ((character = reader.read()) != -1) {
System.out.print((char) character);
}
reader.close();
} catch (IOException e) {
System.out.println("파일 읽기 중 오류 발생: " + e.getMessage());
}
}
}
🔹 FileReader는 파일을 한 문자씩 읽는 방식으로 작동합니다.
✅ 버퍼를 사용한 파일 읽기 (``)
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReadExample {
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());
}
}
}
🔹 BufferedReader는 파일을 한 줄씩 읽을 수 있어 성능이 향상됩니다.
5. 파일 삭제
파일을 삭제하려면 delete() 메서드를 사용할 수 있습니다.
✅ 파일 삭제 예제
import java.io.File;
public class FileDeleteExample {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.delete()) {
System.out.println("파일이 삭제되었습니다: " + file.getName());
} else {
System.out.println("파일 삭제 실패");
}
}
}
🔹 파일이 존재하면 삭제되고, 존재하지 않으면 삭제 실패 메시지가 출력됩니다.
결론
- 파일 쓰기: FileWriter, BufferedWriter
- 파일 읽기: FileReader, BufferedReader
- 파일 삭제: File.delete()
- 버퍼를 사용하면 성능이 향상됨
파일 입출력은 데이터 저장 및 로깅에 필수적인 기능이며, 다양한 방식으로 활용할 수 있습니다. 🚀
'IT > JAVA' 카테고리의 다른 글
| JDBC를 이용한 데이터베이스 연결 (1) | 2025.03.05 |
|---|---|
| Java 멀티스레딩과 동기화 이해(Multithreading, Synchronization, volatile) (2) | 2025.03.04 |
| Java 스트림(Stream) API와 람다 표현식 (2) | 2025.03.02 |
| HashMap vs HashSet 차이점 (1) | 2025.03.01 |
| Java Collection Framework 개요 (List, Set, Map) (1) | 2025.02.28 |