자바 I/O (Java I/O)
파일 읽기/쓰기 (File Reading/Writing)
파일 읽기와 쓰기는 자바에서 중요한 작업 중 하나입니다. 이를 위해 주로 사용되는 클래스들은 FileInputStream, FileOutputStream, FileReader, FileWriter 등이 있습니다.
바이트 스트림과 문자 스트림 (Byte Streams and Character Streams)
Java I/O는 크게 두 가지 스트림 유형으로 나눌 수 있습니다: 바이트 스트림과 문자 스트림입니다. 각각은 다음과 같은 특성을 가지고 있습니다:
- 바이트 스트림 (Byte Streams): 데이터를 바이트(byte) 단위로 처리합니다. 모든 종류의 데이터, 예를 들어 이미지, 오디오 파일 등도 바이트 스트림으로 처리될 수 있습니다.
FileInputStream: 파일로부터 바이트 단위로 데이터를 읽습니다.FileOutputStream: 파일에 바이트 단위로 데이터를 씁니다. 바이트 스트림 예제:
import java.io.*;
public class ByteStreamExample {
public static void main(String[] args) {
try {
// 파일에 데이터 쓰기
FileOutputStream fos = new FileOutputStream("output.txt");
String message = "Hello, Byte Streams!";
byte[] bytes = message.getBytes();
fos.write(bytes);
fos.close();
// 파일에서 데이터 읽기
FileInputStream fis = new FileInputStream("output.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 예제에서는 FileOutputStream을 사용하여 파일에 문자열 데이터를 바이트로 씁니다. 그리고 FileInputStream을 사용하여 파일에서 바이트를 읽고 문자로 변환하여 출력합니다.
- 문자 스트림 (Character Streams): 데이터를 문자(character) 단위로 처리합니다. 문자 스트림은 인코딩 방식에 맞게 문자를 처리하므로 텍스트 데이터를 읽고 쓰는 데 유리합니다.
FileReader: 파일로부터 문자 단위로 데이터를 읽습니다.FileWriter: 파일에 문자 단위로 데이터를 씁니다. 문자 스트림 예제:
import java.io.*;
public class CharacterStreamExample {
public static void main(String[] args) {
try {
// 파일에 데이터 쓰기
FileWriter fw = new FileWriter("output.txt");
String message = "Hello, Character Streams!";
fw.write(message);
fw.close();
// 파일에서 데이터 읽기
FileReader fr = new FileReader("output.txt");
int data;
while ((data = fr.read()) != -1) {
System.out.print((char) data);
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 예제에서는 FileWriter를 사용하여 파일에 문자열 데이터를 씁니다. 그리고 FileReader를 사용하여 파일에서 문자를 읽어와 출력합니다.
