I/O ?
๋ฐ์ดํฐ์ ์ ๋ ฅ(Input) ๋ฐ ์ถ๋ ฅ(Output)์ ์๋ฏธํ๋ค.
๋ด๊ฐ ํค๋ณด๋๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ ๋ ฅํ๋ฉด ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ์ด ๋๊ณ , ํ๋ก๊ทธ๋จ์์ ์ถ๋ ฅ์คํธ๋ฆผ์ ํตํด ์ฝ์๋ก ์ถ๋ ฅํ๋ค.
์ด๋ ํค๋ณด๋์ ์ฝ์์ ๋ ธ๋, ์ด๋ฌํ ๊ณผ์ ์ ๋ ธ๋์คํธ๋ฆผ์ด๋ผ๊ณ ์ง์นญํ๋ค.
์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ๋ค.(ํ๋์ ์คํธ๋ฆผ์ผ๋ก ์ /์ถ๋ ฅ์ ๊ฐ์ด ํ ์ ์์)
Node Stream์ ์ข ๋ฅ
Input Stream(Byte)์ ๋ฉ์๋
- read(): byte ํ๋๋ฅผ ์ฝ์ด์ int๋ก ๋ฐํํ๋ค. ๋ ์ฝ์ ๊ฐ์ด ์์ผ๋ฉด -1์ ๋ฆฌํดํ๋ค.
- read(byte b[]): b๋งํผ ์ฝ์ด์ ์ฝ์ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ๋ฆฌํด, ๋ ์ฝ์ ๊ฐ์ด ์์ผ๋ฉด 0์ ๋ฆฌํดํ๋ค.
- read(byte b[], int offset, int len): len๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด b์ offset๋ถํฐ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ๋ฆฌํด(len+offset <= b์ ํฌ๊ธฐ)
- close(): ์คํธ๋ฆผ์ ์ข ๋ฃํด์ ์์์ ๋ฐ๋ฉํ๋ค.
Output Stream(Byte)์ ๋ฉ์๋
- write(int b): b๋ฅผ byte๋ก ์ถ๋ ฅํ๋ค.
- write(byte b[]): b๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค.
- write(byte b[], int offset, int len): b์ offset๋ถํฐ offset+len-1๋งํผ์ ๋ฌธ์์ด๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค.
- flush(): ๋ฒํผ์ ๋ด์ฉ์ ์ถ๋ ฅํ๊ณ ๋ฒํผ๋ฅผ ๋น์ด๋ค.
- close(): ์คํธ๋ฆผ์ ์ข ๋ฃํด์ ์์์ ๋ฐ๋ฉํ๋ค.
Reader(Char)์ ๋ฉ์๋
- read(): char ํ๋๋ฅผ ์ฝ์ด์ int๋ก ๋ฐํํ๋ค. ๋ ์ฝ์ ๊ฐ์ด ์์ผ๋ฉด -1์ ๋ฆฌํดํ๋ค.
- read(char c[]): c๋งํผ ์ฝ์ด์ ์ฝ์ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ๋ฆฌํด, ๋ ์ฝ์ ๊ฐ์ด ์์ผ๋ฉด 0์ ๋ฆฌํดํ๋ค.
- read(char c[], int offset, int len): len๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด c์ offset๋ถํฐ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ๋ฆฌํด(len+offset <= c์ ํฌ๊ธฐ)
- read(java.nio.CharBuffer target): ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ target์ ์ ์ฅํ๋ค.
- close(): ์คํธ๋ฆผ์ ์ข ๋ฃํด์ ์์์ ๋ฐ๋ฉํ๋ค.
Writer(Char)์ ๋ฉ์๋
- write(int c): c๋ฅผ char๋ก ์ถ๋ ฅํ๋ค.
- write(char c[]): c๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค.
- write(char c[], int offset, int len): c์ offset๋ถํฐ offset+len-1๋งํผ์ ๋ฌธ์์ด๋ก ๋ณํํด์ ์ถ๋ ฅํ๋ค.
- append(CharSequence csq): csq๋ฅผ ์ถ๋ ฅํ๊ณ Writer๋ฅผ ๋ฆฌํดํ๋ค.
- append(CharSequence csq, int start, int end): csq์ start ~ end๊น์ง ์ถ๋ ฅํ๊ณ Writer๋ฅผ ๋ฆฌํดํ๋ค.
- flush(): ๋ฒํผ์ ๋ด์ฉ์ ์ถ๋ ฅํ๊ณ ๋ฒํผ๋ฅผ ๋น์ด๋ค.
- close(): ์คํธ๋ฆผ์ ์ข ๋ฃํด์ ์์์ ๋ฐ๋ฉํ๋ค.
File
- File(String pathname): pathname์ ํด๋นํ๋ ํ์ผ์ ์์ฑํ๋ค. ์ด๊ฑธ ์ ๋ฃ์ผ๋ฉด App๋ฅผ ์์ํ ๊ฒฝ๋ก๋ก ์ค์ ํ๋ค.
- File(File P, String C): P๊ฒฝ๋ก ์๋ C๋ฅผ ์์ฑํ๋ค.
- File(URI uri): file๋ก ์์ํ๋ URI ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ํ์ผ์ ์์ฑ
- CreateNewFile(): ๋ฌผ๋ฆฌ์ ์ธ ํ์ผ์ ์์ฑํ๋ค.
- getAbsolutePath(): ํ์ผ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅํ๋ค.
- getCanonicalPath(): ํ์ผ์ ์ ์ ๊ฒฝ๋ก(์ ๋ ๊ฒฝ๋ก์ด๋ฉฐ .์ด๋ ..๊ฐ์ ์๋ ๊ฒฝ๋ก ๊ธฐํธ๊ฐ ์๋ ๊ฒฝ๋ก)๋ฅผ ์ถ๋ ฅํ๋ค.
- ListFile(): ํ์ผ์ด ๋๋ ํฐ๋ฆฌ์ผ ๊ฒฝ์ฐ ์์ ํ์ผ๋ค์ File [] ํํ๋ก ๋ฆฌํดํ๋ค.
- FileInputStream(String name): name ๊ฒฝ๋ก์ ํ์ผ์ ์ฝ๋ FIleInputStream์ ์์ฑํ๋ค.
- FileOutputStream(String name): name ๊ฒฝ๋ก์ ํ์ผ์ ์ถ๋ ฅํ๋ FIleOutputStream์ ์์ฑํ๋ค.
- FileOutputStream(String name, boolean append): ์์ ๋์ผ, ๊ธฐ์กด ํ์ผ์ด ์์ผ๋ฉด ์ด์ด์ ์์ฑ
๋ณด์กฐ ์คํธ๋ฆผ
๋ค๋ฅธ ์คํธ๋ฆผ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์คํธ๋ฆผ์ด๋ค.
ํ์์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ฐ๊ฒฐํด์ ์ฌ์ฉํ ์ ์๋ค.(์คํธ๋ฆผ ์ฒด์ด๋)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
๋ณด์กฐ์คํธ๋ฆผ์ BufferedReader๋ฅผ ์ด์ฉํ์ฌ Input์ ๋ฐ๋ ์์ ์ฝ๋์ด๋ค.
Scanner์ ๋นํด ์๋๊ฐ ๋นจ๋ผ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ์ ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
๊ฐ์ฒด ์ง๋ ฌํ
๊ฐ์ฒด๋ฅผ ํ์ผ ๋ฑ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ก ์ ์กํ๊ธฐ ์ํด ์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ ๊ฒ์ด๋ค.
ํด๋์ค์์ Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ฉฐ, ์ง๋ ฌํ๋ฅผ ์ํ์ง ์๋ ๋ฉค๋ฒ๋ transient๋ฅผ ์ ์ธํ๋ฉด ๋๋ค.
serialVersionUID: ํด๋์ค์ ๋ณ๊ฒฝ ์ฌ๋ถ๋ฅผ ํ์ ํ๊ธฐ ์ํ ์ ์ผ ํค๋ก ์ง๋ ฌํ - ์ญ์ง๋ ฌํ ๊ฐ ๊ฒ์ฆ์ฉ์ผ๋ก ์ฌ์ฉํ๋ค.
ObjectOutputStream(OutputStream out): out์ ์ด์ฉํด ObjectOutputStream ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
writeObject(Object obj): obj๋ฅผ ์ง๋ ฌํํ์ฌ ์ถ๋ ฅํ๋ค.
ObjectInputStream(InputStream in): in์ ์ด์ฉํด ObjectInputStream ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
readObject(): ์ง๋ ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ง๋ ฌํํด์ Object๋ก ๋ฐํํ๋ค.
private static File target = new File("c:/Temp/objPerson.dat ");
private static void write() {
Person person = new Person("ํฅ๊ธธ๋2", "pass1234", "123-456", "seoul");
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(target))) {
oos.writeObject(person);
System.out.println("์ ์ฅ ์๋ฃ!");
} catch (IOException e){
e.printStackTrace();
}
}
private static void read() {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(target))){
Object readed = ois.readObject();
if (readed != null && readed instanceof Person casted){
System.out.println("๋ก๋ฉ ์๋ฃ: " + casted);
}
} catch (IOException | ClassNotFoundException e){
e.printStackTrace();
}
}
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] GC - Mark & Sweep ๋์ ์๋ฆฌ (0) | 2025.05.17 |
---|---|
[JAVA] ConcurrentHashMap (0) | 2025.05.17 |
[JAVA] Exception (0) | 2024.07.28 |
[JAVA] Stream API (0) | 2024.07.25 |
[JAVA] Lambda (0) | 2024.07.24 |