자바 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
를 사용하여 파일에서 문자를 읽어와 출력합니다.