java.io
패키지는 입출력(I/O) 작업을 위한 클래스와 인터페이스를 제공합니다.
이 패키지를 사용하면 파일, 네트워크, 메모리 등 다양한 소스로부터 데이터를 읽고 쓸 수 있습니다.
다음은 java.io
패키지의 주요 클래스와 인터페이스들입니다.
1. 입력 스트림 (Input Stream)
입력 스트림은 바이트 단위로 데이터를 읽어오는 추상 클래스입니다. 주요 서브 클래스로는 FileInputStream
, ByteArrayInputStream
, ObjectInputStream
등이 있습니다.
1
2
3
4
5
6
7
8
|
try (FileInputStream fis = new FileInputStream(“file.txt”)) {
int data;
while ((data = fis.read()) != –1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
|
cs |
2. 출력 스트림 (Output Stream)
출력 스트림은 바이트 단위로 데이터를 쓰는 추상 클래스입니다. 주요 서브 클래스로는 FileOutputStream
, ByteArrayOutputStream
, ObjectOutputStream
등이 있습니다.
1
2
3
4
5
6
|
try (FileOutputStream fos = new FileOutputStream(“file.txt”)) {
String data = “Hello, World!”;
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
|
cs |
3. 문자 입력 스트림 (Reader)
문자 입력 스트림은 문자 단위로 데이터를 읽어오는 추상 클래스입니다. 주요 서브 클래스로는 FileReader
, StringReader
, BufferedReader
등이 있습니다.
1
2
3
4
5
6
7
8
|
try (FileReader fr = new FileReader(“file.txt”)) {
int data;
while ((data = fr.read()) != –1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
|
cs |
4. 문자 출력 스트림 (Writer)
문자 출력 스트림은 문자 단위로 데이터를 쓰는 추상 클래스입니다. 주요 서브 클래스로는 FileWriter
, StringWriter
, BufferedWriter
등이 있습니다.
1
2
3
4
5
6
|
try (FileWriter fw = new FileWriter(“file.txt”)) {
String data = “Hello, World!”;
fw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
|
cs |
5. 버퍼링된 입출력 스트림 (Buffered Streams)
버퍼링된 입출력 스트림은 데이터를 버퍼에 저장하여 I/O 성능을 향상시킵니다. BufferedInputStream
, BufferedOutputStream
, BufferedReader
, BufferedWriter
등이 있습니다.
1
2
3
4
5
6
7
8
|
try (BufferedReader br = new BufferedReader(new FileReader(“file.txt”))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
|
cs |
6. 직렬화 (Serialization)
직렬화는 객체를 바이트 스트림으로 변환하여 파일이나 네트워크로 전송할 수 있도록 하는 기능입니다. Serializable
인터페이스를 구현한 클래스는 직렬화될 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Person implements Serializable {
private String name;
private int age;
// getters and setters
}
Person person = new Person(“John”, 30);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“person.dat”))) {
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“person.dat”))) {
Person deserializedPerson = (Person) ois.readObject();
System.out.println(deserializedPerson.getName() + ” “ + deserializedPerson.getAge());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
|
cs |
java.io
패키지는 Java에서 데이터의 입출력을 처리하는 데 필수적인 클래스들을 제공합니다. 이 패키지의 클래스들을 활용하여 파일 읽기/쓰기, 네트워크 통신, 객체 직렬화 등 다양한 I/O 작업을 수행할 수 있습니다. 또한 try-with-resources 문을 사용하면 스트림을 자동으로 닫아주므로 자원 관리가 편리해집니다.
- Oracle Java Documentation – java.io Package
- Baeldung – Java IO
- GeeksforGeeks – Java.io Package in Java
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.