Programing_Java
Section#19 _ ํ์ผ ์ ์ถ๋ ฅ ๋ณธ๋ฌธ
#1 ์๋ฐ ์ ์ถ๋ ฅ๊ณผ ์คํธ๋ฆผ
: ์๋ฐ๋ ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ณ๋์ I/O ํจํค์ง๋ฅผ ์ ๊ณต
: ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ด ๋์คํฌ์ ์ ๊ทผํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์์ ์ ๋์์ฃผ๋ ํต๋ก → ์คํธ๋ฆผ, ๊ฐ์ ํต๋ก
์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ํน์ง
: ํ๋ก๊ทธ๋จ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด ์ ๋ ฅ ์คํธ๋ฆผ, ๋ฐ์ดํฐ๊ฐ ๋๊ฐ๋ฉด ์ถ๋ ฅ ์คํธ๋ฆผ
: ๋์์ ์งํ๋๋ ๊ฒ์ด ์๋๋ผ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํ ๊ฐ์ง ๊ธฐ๋ฅ๋ง ๋์ → ์คํธ๋ฆผ์ด ๋ฐ๋ก ํ์ํจ
์ฃผ์ ํน์ง
: ์คํธ๋ฆผ์ ์ ๋์์ ์ ๋ฌ์ด ์ด๋ฃจ์ด์ง
: ๋จ๋ฐฉํฅ ํต์ → ์ , ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ณ๋๋ก ์ฌ์ฉ
: ์ฐ์๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ผ๋ก ์ ์ถ๋ ฅ ์งํ ์ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ ์ํ
: ๋์ผํ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์์
#2 ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ข ๋ฅ
: ์ ๋ฌ ๋ฐฉ์์ ๋ฐ๋ผ byte ๊ธฐ๋ฐ ์คํธ๋ฆผ๊ณผ char ๊ธฐ๋ฐ ์คํธ๋ฆผ์ผ๋ก ๊ตฌ๋ถ
byte ๊ธฐ๋ฐ → ๋ฐ์ดํฐ๋ฅผ ์ปดํจํฐ์ ๊ธฐ๋ณธ ๋จ์์ธ byte ๋จ์๋ก ๋๋์ด ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ
char ๊ธฐ๋ฐ → ํ ์คํธ ๊ธฐ๋ฐ ๋ฌธ์๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์คํธ๋ฆผ
byte ๊ธฐ๋ฐ ์คํธ๋ฆผ | char ๊ธฐ๋ฐ ์คํธ๋ฆผ |
๋ชจ๋ ํ์ ์ ๋ฐ์ดํฐ ๊ฐ๋ฅ | ๋ฌธ์ ๋ฐ์ดํฐ๋ง ๊ฐ๋ฅ |
๊ทธ๋ฆผ, ๋ฉํฐ๋ฏธ๋์ด, ๋ฌธ์ ๋ฑ | ํ ์คํธ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์ |
#3 byte ๊ธฐ๋ฐ ์คํธ๋ฆผ
InputStream : ๋ฐ์ดํธ ์ ๋ ฅ ์คํธ๋ฆผ
: ์ต์์ ํด๋์ค๋ก InputStream ๊ฐ์ฒด๊ฐ ์ ๊ณต → ํด๋น ๊ฐ์ฒด๋ฅผ ์์ํด ๋ค์ํ ์ ๋ ฅ ์คํธ๋ฆผ๋ค์ด ์กด์ฌ
FileInputStream
: ํ์ผ์์ ๋ฐ์ดํธ ๋จ์๋ก ์๋ฃ๋ฅผ ์ฝ์ด ๋ค์ผ ๋ ์ฌ์ฉํ๋ ์คํธ๋ฆผ
: ์ ์ธ ๋ฐฉ๋ฒ
new FileInputStream(๊ฒฝ๋ก/ํ์ผ๋ช
);
// ๋งค๊ฐ๋ณ์๋ก ํ์ผ๋ช
์ ํฌํจํ ๊ฒฝ๋ก๋ฅผ ์ง์
- read() ๋ฉ์๋
: 1 byte ์ฉ ์ฝ์ด์ int ํ์ ์ผ๋ก ๋ฆฌํด, ๋์ด์ ์ฝ์ ๋ด์ฉ์ด ์์ ๊ฒฝ์ฐ -1์ ๋ฐํํ์ฌ ์ข ๋ฃํ ์ ์์
: ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ํ์ ์ผ๋ก ์ฝ์ด์ค๊ธฐ ๋๋ฌธ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ ๊ฒฝ์ฐ ํ ๋ณํํ์ฌ ์ถ๋ ฅ
: ๋ชจ๋ ์ ์ถ๋ ฅ ๊ธฐ๋ฅ์ CheckException์ ๋ฐ๋ผ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผํจ
: 1byte ์ฉ ์ฝ๊ธฐ์ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์
-read(byte[] b) ๋ฉ์๋
: ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด์ ๋ด์์ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ํ์๊ฐ ์ค์ด๋ฌ → ์ฝ๋ ์๋ ํฅ์ ๊ฐ๋ฅ
: byte ๊ธฐ๋ฐ ์ ๋ ฅ ์คํธ๋ง๋ฏ๋ก ํ์ผ์ read() ๋ฉ์๋๋ฅผ ํตํด ์ฝ์ผ๋ฉด ํ๊ธ์ ๊ฒฝ์ฐ ๊นจ์ง ํ์์ด ์ผ์ด๋จ
→ ๋ค์ ๋ฌธ์ํ์ผ๋ก ๋ณํํ ๋ ์ ์์ ์ผ๋ก ๋ณํ๋์ง ์๊ธฐ ๋๋ฌธ
OutputStream : ๋ฐ์ดํธ ์ถ๋ ฅ ์คํธ๋ฆผ
: ์ต์์ ํด๋์ค๋ก OutputStream ๊ฐ์ฒด๊ฐ ์ ๊ณต
FileOutputStream
: ์ ์ธ ๋ฐฉ๋ฒ
new FileOutputStream(๊ฒฝ๋ก/ํ์ผ๋ช
, ์ด์ด์ฐ๊ธฐ ์ต์
);
// ์ด์ด์ฐ๊ธฐ ์ต์
์ด true → ๊ธฐ์กด ํ์ผ์ ์ด์ด์ ๋ด์ฉ ์ถ๊ฐ
// ์ด์ด์ฐ๊ธฐ ์ต์
์ด false → ๊ธฐ์กด ๋ด์ฉ์ ๋ฌด์ํ๊ณ ์๋ก ์ฐ๊ธฐ
- wrtie(int b) ๋ฉ์๋
: ๋จ์ผ ๋ฐ์ดํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ถ๋ ฅ ๋์์ ์
- wrtie(byte[] b) ๋ฉ์๋
: String ๊ฐ์ฒด๋ ๋ฐ์ดํธ ๋ฐฐ์ด ํ์ ์ผ๋ก ๋ณํ ๊ฐ๋ฅ
#4 ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ
: ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ charํ์ ํฌ๊ธฐ๋ 2byte๋ก ๋ณ๋์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์ผ๋ฉด ์ ์์ ์ผ๋ก ์ฝ์ง ๋ชปํจ → ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ ํ์ฉํด ์ฒ๋ฆฌ
Reader : ๋ฌธ์ ์ ๋ ฅ ์คํธ๋ฆผ
: ์ต์์ ํด๋์ค์ธ Reader๋ฅผ ์์ํด ๋ค์ํ ํด๋์ค๋ฅผ ์ ๊ณต
FileReader
- read() ๋ฉ์๋
: ๋ฌธ์ ๋จ์๋ก ์ฝ์ด์ intํ์ผ๋ก ๋ฐํ → ํ๊ธ์ด ๊นจ์ง์ง ์๊ณ ์ถ๋ ฅ
- read(char[] cbuf) ๋ฉ์๋
: byte ๋ฐฐ์ด์ด ์๋ char ๋ฐฐ์ด์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ → ๋ฐฐ์ด ๋จ์๋ก ๋ฌธ์๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์ ์ฝ๋ ํ์๊ฐ ํ์ ํ ์ค์ด๋ค์ด ์๋์์ ํจ์จ์ฑ
Writer : ๋ฌธ์ ์ถ๋ ฅ ์คํธ๋ฆผ
FileWriter ์ ์ธ
new FileWriter(๊ฒฝ๋ก/ํ์ผ๋ช
, ์ด์ด์ฐ๊ธฐ ์ต์
);
- wrtie(char cbuf) ๋ฉ์๋
: ๋จ์ผ ๋ฌธ์๋ฅผ ์ ๋ ฅ ๋ฐ์ ์ถ๋ ฅํ๋ ๋ฉ์๋
: ํ ๋ฌธ์ฅ์ฉ ์ฝ์ด ๋ค์ฌ์ ์ง์ ๋ ํ์ผ์ ๋ด์ฉ์ ์ ๋ ฅ
#5 ๋ณด์กฐ ์คํธ๋ฆผ
- ๊ธฐ๋ฐ ์คํธ๋ฆผ : ๋์์ ์ง์ ์๋ฃ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์คํธ๋ฆผ
- ๋ณด์กฐ ์คํธ๋ฆผ : ์ง์ ์ฝ๊ณ ์ฐ๋ ๊ธฐ๋ฅ ์์ด ๊ธฐ๋ฐ ์คํธ๋ฆผ์ ์ถ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋ ์คํธ๋ฆผ
→ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์๋ ์์
→ ์คํธ๋ฆผ์ ๊ธฐ๋ฅ์ ํฅ์์ํค๊ฑฐ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ์คํธ๋ฆผ์ผ๋ก ๋ค๋ฅธ ๋ณด์กฐ ์คํธ๋ฆผ๊ณผ ์ค์ฒฉํ์ฌ ์ฌ์ฉ
๋ณด์กฐ ์คํธ๋ฆผ ์ฐ๊ฒฐํ๊ธฐ
: ๋ณด์กฐ ์คํธ๋ฆผ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ด ๋จผ์ ์ ์ธ๋์ด์ผ ํจ
: ์ค์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ ์๊ธฐ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ด ํ์
๋ณด์กฐ ์คํธ๋ฆผ ๋ณ์๋ช
= new ๋ณด์กฐ์คํธ๋ฆผ(๊ธฐ๋ฐ ์คํธ๋ฆผ);
์ฑ๋ฅ ํฅ์ ๋ณด์กฐ ์คํธ๋ฆผ
: ๋ณด์กฐ ์คํธ๋ฆผ ์ค์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๋ฅผ ์ถ๊ฐ๋ก ์ ๊ณตํ์ฌ ์คํธ๋ฆผ์ ์ฑ๋ฅ์ ํฅ์ ์ํค๋ ๊ฒ๋ค์ด ์์
→ byte ๊ธฐ๋ฐ ์คํธ๋ฆผ : BufferedInputStream & BefferedOutputStream
→ char ๊ธฐ๋ฐ ์คํธ๋ฆผ : BufferedReader & BufferdWriter
BufferedInputStream
: byte ๊ธฐ๋ฐ InputStream์ ์ฐ๊ฒฐ๋์ด ๋ฒํผ ์ ๊ณต
→ ๋ฒํผ์ ์ ์ฅํด๋์๋ค๊ฐ ํฐ ๋จ์๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ํฅ์
BefferedOutputStream
: byte ๊ธฐ๋ฐ OutputStream์ ์ฐ๊ฒฐ๋์ด ๋ฒํผ ์ ๊ณต
: ํ๋ก๊ทธ๋จ์์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ถ ๋ฒํผ์ ์์๋์๋ค๊ฐ ๊ฝ ์ฐจ๋ฉด ํ๋ฒ์ ์ ์ก
ํ๋ก๊ทธ๋จ์ ์ ์ฅ → ๋ฒํผ๋ฅผ ํตํด ํ๊บผ๋ฒ์ ์ ์กํจ์ผ๋ก์จ ์ ์ถ๋ ฅ ํ์๋ฅผ ์ค์ฌ ์คํ ์ฑ๋ฅ์ด ํฅ์๋๋ ํจ๊ณผ
๋ณด์กฐ ์คํธ๋ฆผ์ ์ฌ์ฉ
: ๊ธฐ๋ฐ ์คํธ๋ฆผ์ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ ์ ์ธ
InputStream in = new ...
BufferdInputStream bis = new BufferdInputStream (in);
BufferedReader
→ ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ธ Reader์ ์ฐ๊ฒฐ
BufferdWriter
→ Writer์ ์ฐ๊ฒฐ
๋ฌธ์ ๋ณํ ๋ณด์กฐ ์คํธ๋ฆผ
: ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ → ํ ์คํธ ํ์ผ์ ์ฝ๊ฑฐ๋ ์ธ ๊ฒฝ์ฐ, ํ๊ธ์ ํฌํจํ ๋น์์ด๊ถ ๋ฌธ์๋ค์ด ์ ์์ ์ผ๋ก ์ถ๋ ฅ X
: Reader์ Writer ๋ ๋ฌธ์ ๋จ์๋ก ์ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ๋ณด๋ค ๋ค์ํ ๋ฌธ์๋ฅผ ์ ์ถ๋ ฅ
: InputStreamReader์ OutputStreamWriter๊ฐ ์์
InputStreamReader
: ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ InputStream์ ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ Reader๋ก ๋ณํํ๋ ๋ณด์กฐ ์คํธ๋ฆผ
OutputStreamWrtier
: ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ OutputStream์ ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ Writer๋ก ๋ณํํ๋ ๋ณด์กฐ ์คํธ๋ฆผ
#6 File ํด๋์ค
ํ์ผ ๊ฐ์ฒด ์ ์ธ
: ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ์
File file = new File("C:\\files\\example.txt");
: ํ์ผ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๊ณ ํด์ ์ค์ ํด๋๋ ํ์ผ์ด ์์ฑ๋๋ ๊ฒ์ ์๋
: ์ง์ ํ ๊ฒฝ๋ก์ ํ์ผ์ด ์์ด๋ ์์ฑ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ ์์
→ File ๊ฐ์ฒด๋ ์ง์ ํ ๊ฒฝ๋ก์ ํ์ผ ๋๋ ํด๋๋ฅผ ๊ฐ์ฒดํ ํ๊ฑฐ๋ ์ง์ ๋ ํ์ผ์ด๋ ํด๋๋ฅผ ์๋ก ์์ฑํ ๋ ๋ชจ๋ ์ฌ์ฉ
#7 ์ง๋ ฌํ
: ์๋ฐ ์์คํ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ์์คํ ์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐ์ดํธ ๋จ์์ ๋ฐ์ดํฐ๋ก ๋ณํ์ํค๋ ๊ธฐ์
: ํด๋์ค ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋ณํ
์ญ์ง๋ ฌํ : ๋ฐ์ดํธ ๋จ์๋ก ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ฒด ํํ๋ก ๋ณํํ๋ ๊ฒ
๊ฐ์ฒด์ ์ง๋ ฌํ
: ์ง๋ ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ค๋น
: ์ฌ์ฉํ ๊ฐ์ฒด์ java.io.Serializable ์ธํฐํ์ด์ค๋ฅผ ์์ํ์ฌ ์ง๋ ฌํ๊ฐ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ๋ง๋ค๊ธฐ
serialVersionUID
: ํด๋น ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ ๋๋ ์ญ์ง๋ ฌํ ํ ๋ ์๋ก ๊ฐ์ด ๋ง๋์ง๋ฅผ ํ์ธํ๋ ๊ธฐ์ค์ด ๋๋ ๊ฐ
→ ์ง๋ ฌํ ๊ณผ์ ์์ ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค๋ฉด? InvalidClassException ์์ธ๊ฐ ๋ฐ์
→ ํด๋น ๊ฐ์ ํ์ ๊ฐ์ด ์๋๊ธฐ์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ํด๋์ค์ ํด์ ๊ฐ ์ฌ์ฉ
ObjectInputStream & ObjectOutputStream
: ์์ํ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ์ฌ ์ ๋ฌํ๊ธฐ ์ํด
ObjectInputStream : ์ญ์ง๋ ฌํ, ๊ฐ์ฒด๋ฅผ ์ฝ๊ธฐ ์ํด ์ฌ์ฉ
ObjectOutputStream : ์ง๋ ฌํ, ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ
๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ์ฌ ์ ์ฅํ ๊ฒฝ์ฐ, text ํํ๊ฐ ์๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ฐ์ดํฐํ → ํ์ผ์ ์ด์ด๋ ๋ด์ฉ์ ๋ณผ ์ ์์
์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ํตํด ObjectInputStream์ ์ด์ฉํด ์ญ์ง๋ ฌํ ํ์ฌ ์ฝ๊ธฐ
'๐ MENTOR JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section#๋ถ๋ก1 _ DB์ ๋ฐ์ดํฐ (0) | 2025.01.28 |
---|---|
Section#18 _ ์ค๋ ๋ (0) | 2025.01.25 |
Section#17 _ ๋๋ค์ (0) | 2025.01.24 |
Section#16 _ ์ปฌ๋ ์ ํ๋ ์์ํฌ (0) | 2025.01.23 |
Section#15 _ ๊ธฐ๋ณธ API ํด๋์ค (0) | 2025.01.22 |