์ ์ถ๋ ฅ ์คํธ๋ฆผ
โข
์
์ถ๋ ฅ ์คํธ๋ฆผ(IO Stream)
โฆ
๋ฐ์ดํธ ์คํธ๋ฆผ (Byte Stream)
โฆ
๋ฌธ์ ์คํธ๋ฆผ (Character Stream)
โข
ํ์ค ์
์ถ๋ ฅ (Standard I/O)
โข
ํ์ผ ์
์ถ๋ ฅ
โฆ
FileInputStream
โฆ
FileOutputStream
โฆ
File
โข
์ง๋ ฌํ (Serialization)
โฆ
SerialVersionUID
์ ์ถ๋ ฅ ์คํธ๋ฆผ(IO Stream)
๋ฐ์ดํฐ์ ์
๋ ฅ ๋ฐ ์ถ๋ ฅ์ ํ๋ฆ์ ๋ค๋ฃจ๋ ๊ฐ๋
โข
๋ฐ์ดํธ ์คํธ๋ฆผ (Byte Stream)
โข
๋ฌธ์ ์คํธ๋ฆผ (Character Stream)
์คํธ๋ฆผ(Stream)
: โํ๋ฆโ
๋ฌผ๋ฆฌ์ ๋๋ ๊ฐ์์ ์ฅ์น๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ํ๋ฌ๊ฐ๋ ํต๋ก
ํ๋ก๊ทธ๋จ(SW)
์ปดํจํฐ(HW) ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ๋ฆ
๋ฐ์ดํธ ์คํธ๋ฆผ (Byte Stream)
๋ฐ์ดํฐ๋ฅผ Byte ๋จ์๋ก ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ํ๋ฆ
ํด๋์ค | ์ค๋ช
|
InputStream | ๋ฐ์ดํธ ์
๋ ฅ ์คํธ๋ฆผ์ ์ํ ์ถ์ ํด๋์ค. |
FileInputStream | ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ฝ์ด๋ค์ด๊ธฐ ์ํด ์ฌ์ฉ. |
BufferedInputStream | ์
๋ ฅ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํธ ์
๋ ฅ ์คํธ๋ฆผ. |
DataInputStream | ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
(int, char ๋ฑ)์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ์ฝ๊ธฐ ์ํด ์ฌ์ฉ. |
OutputStream | ๋ฐ์ดํธ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ํ ์ถ์ ํด๋์ค. |
FileOutputStream | ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ฐ๊ธฐ ์ํด ์ฌ์ฉ. |
BufferedOutputStream | ์ถ๋ ฅ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํธ ์ถ๋ ฅ ์คํธ๋ฆผ. |
DataOutputStream | ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
(int, char ๋ฑ)์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉ. |
๋ฌธ์ ์คํธ๋ฆผ (Character Stream)
๋ฐ์ดํฐ๋ฅผ ๋ฌธ์ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ํ๋ฆ
ํด๋์ค | ์ค๋ช
|
Reader | ๋ฌธ์ ์
๋ ฅ ์คํธ๋ฆผ์ ์ํ ์ถ์ ํด๋์ค. |
FileReader | ํ์ผ๋ก๋ถํฐ ๋ฌธ์๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ. |
BufferedReader | ์
๋ ฅ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ์
๋ ฅ ์คํธ๋ฆผ. |
InputStreamReader | ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ฌธ์ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉ. |
Writer | ๋ฌธ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ํ ์ถ์ ํด๋์ค. |
FileWriter | ํ์ผ์ ๋ฌธ์๋ฅผ ์ธ ๋ ์ฌ์ฉ. |
BufferedWriter | ์ถ๋ ฅ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ด๋ถ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ์ถ๋ ฅ ์คํธ๋ฆผ. |
OutputStreamWriter | ๋ฐ์ดํธ ์คํธ๋ฆผ์ ๋ฌธ์ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉ. |
ํ์ค ์ ์ถ๋ ฅ (Standard I/O)
ํค๋ณด๋๋ฅผ ํตํด ์
๋ ฅ๋ฐ๊ณ , ๋ชจ๋ํฐ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ณธ์ ์ธ ์
์ถ๋ ฅ
ํ์ค ์คํธ๋ฆผ | ์ค๋ช
| ํ์
|
ํ์ค ์
๋ ฅ
(System.in) | ๊ธฐ๋ณธ์ ์ผ๋ก InputStream ํ์
์
๋๋ค. Scanner ๋๋ InputStreamReader๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค. | InputStream |
ํ์ค ์ถ๋ ฅ
(System.out) | ๊ธฐ๋ณธ์ ์ผ๋ก PrintStream ํ์
์
๋๋ค. | PrintStream |
ํ์ค ์ค๋ฅ
(System.err) | ๊ธฐ๋ณธ์ ์ผ๋ก PrintStream ํ์
์ผ๋ก, ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. | PrintStream |
ํ์ค ์ ๋ ฅ ์์์ฝ๋
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine(); // ์ฌ์ฉ์๋ก๋ถํฐ ํ ์ค ์
๋ ฅ ๋ฐ๊ธฐ
Java
๋ณต์ฌ
ํ์ค ์ถ๋ ฅ ์์์ฝ๋
System.out.println("Aloha, World~!");
Java
๋ณต์ฌ
ํ์ผ ์ ์ถ๋ ฅ
File ํด๋์ค์ ํจ๊ป ํ์ผ ์์คํ
์์ ํ๋ก๊ทธ๋จ์ผ๋ก ํ์ผ์ ์
๋ ฅ๋ฐ๊ณ , ๋ฐ๋๋ก ํ๋ก๊ทธ๋จ์์ ํ์ผ ์์คํ
์ ํ์ผ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
FileInputStream
ํ์ผ์ ์ด์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์
๋ ฅํ๋ ํด๋์ค
FileInputStream ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช
| ๋ฐํ ํ์
|
int read() | ํ์ผ์์ ๋ค์ ๋ฐ์ดํธ๋ฅผ ์ฝ์ด ๋ฐํํฉ๋๋ค. ๋ ์ด์ ์ฝ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค. | int |
int read(byte[] b) | ์ฃผ์ด์ง ๋ฐ์ดํธ ๋ฐฐ์ด์ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ๋ค์
๋๋ค. ๋ฐํ๊ฐ์ ์ฝ์ ๋ฐ์ดํธ ์์
๋๋ค. | int |
void close() | ์คํธ๋ฆผ์ ๋ซ์ ํ์ผ์ ํด์ ํฉ๋๋ค. | void |
long skip(long n) | ํ์ผ์ ํ์ฌ ์์น์์ n ๋ฐ์ดํธ๋ฅผ ๊ฑด๋๋๋๋ค. | long |
int available() | ํ์ฌ ์ฝ์ ์ ์๋ ๋ฐ์ดํธ ์๋ฅผ ๋ฐํํฉ๋๋ค. | int |
FileOutputStream
ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ฐ๊ธฐ ์ํ ํด๋์ค
FileOutputStream ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช
| ๋ฐํ ํ์
|
void write(int b) | ์ง์ ๋ ๋ฐ์ดํธ๋ฅผ ํ์ผ์ ์๋๋ค. | void |
void write(byte[] b) | ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์๋๋ค. | void |
void write(byte[] b, int off, int len) | ๋ฐ์ดํธ ๋ฐฐ์ด์ ํน์ ๋ถ๋ถ์ ํ์ผ์ ์๋๋ค.
off๋ ์์ ์ธ๋ฑ์ค, len์ ๊ธธ์ด์
๋๋ค. | void |
void close() | ์คํธ๋ฆผ์ ๋ซ์ ํ์ผ์ ํด์ ํฉ๋๋ค. | void |
void flush() | ์คํธ๋ฆผ์ ๋ฒํผ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ๋ก ํ์ผ์ ์๋๋ค. | void |
File
ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ด๋ ํด๋์ค
โข
File ๊ฐ์ฒด๋ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ผ์ ์์ฑ, ์ญ์ , ํ์ธ, ํ์ผ ์์ฑ ์ฝ๊ธฐ ๋ฑ์ ์์
์ ์ํํ ์ ์์ต๋๋ค.
โข
ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ File ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์คํธ๋ฆผ์ ์ด์ด ์ํํฉ๋๋ค.
โข
File ํด๋์ค ์์ฒด๋ก๋ ํ์ผ์ ๋ด์ฉ์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ํ์ผ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ฑฐ๋, ๋๋ ํ ๋ฆฌ๋ฅผ ๋์ดํ๋ ๋ฑ์ ์์
์ ์ฌ์ฉ๋ฉ๋๋ค.
File file = new File("ํ์ผ๊ฒฝ๋ก");
Java
๋ณต์ฌ
File file = new File("ํ์ผ๊ฒฝ๋ก", "ํ์ผ๋ช
");
Java
๋ณต์ฌ
์ง๋ ฌํ (Serialization)
๊ฐ์ฒด๋ฅผ ์คํธ๋ฆผ์ ํตํด ์ ์กํ๊ฑฐ๋ ํ์ผ๋ก ์ ์ฅ ์ํด ๋ฐ์ดํธ ํํ๋ก ๋ณํํ๋ ๊ณผ์
์ง๋ ฌํ ์์์ฝ๋
โข
Person.java
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
Java
๋ณต์ฌ
โข
SerializePerson.java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Scanner;
public class SerializePerson {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ ๋ฐ๊ธฐ
System.out.print("Enter name: ");
String name = scanner.nextLine();
System.out.print("Enter age: ");
int age = scanner.nextInt();
// Person ๊ฐ์ฒด ์์ฑ
Person person = new Person(name, age);
// ํ์ผ์ ์ง๋ ฌํ
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Person.dat"))) {
oos.writeObject(person);
System.out.println("Person object has been serialized and saved to Person.dat");
} catch (IOException e) {
e.printStackTrace();
} finally {
scanner.close();
}
}
}
Java
๋ณต์ฌ
์ญ์ง๋ ฌํ ์์์ฝ๋
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class DeserializePerson {
public static void main(String[] args) {
// ํ์ผ์์ ์ญ์ง๋ ฌํ
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.dat"))) {
Person person = (Person) ois.readObject();
System.out.println("Person object has been deserialized: " + person);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Java
๋ณต์ฌ
SerialVersionUID
ํด๋์ค์ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์, ์ด๋ฏธ ์ง๋ ฌํ๋ ๊ฐ์ฒด์ ํด๋์ค๊ฐ์ ํธํ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํ ์๋ณ์
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L; // ๊ณ ์ ์๋ณ์
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter, Setter, toString() ๋ฑ ํ์ํ ๋ฉ์๋๋ค
}
Java
๋ณต์ฌ
๋ณ๊ฒฝ ์
private static final long serialVersionUID = 1L;
Java
๋ณต์ฌ
โข
๋ณ์ ์ถ๊ฐ
private String name;
private int age;
private String address;
Java
๋ณต์ฌ
๋ณ๊ฒฝ ํ
private static final long serialVersionUID = 2L;
Java
๋ณต์ฌ