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
 
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

			