ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๋์๋ ์ ๋ ฅ ์คํธ๋ฆผ(InputStream)์ด๋ผ ๋ถ๋ฅด๊ณ , ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋์๋ ์ถ๋ ฅ(OutptutStream)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
InputStream์ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ ๋ ฅ ์คํธ๋ฆผ์ ์ต์์ ํด๋์ค๋ก ์ถ์ ํด๋์ค์ด๋ค.
read()๋ ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ 4๋ฐ์ดํธ int ํ์ ์ผ๋ก ๋ฆฌํดํ๋ค. ๋ฆฌํดํ 4๋ฐ์ดํธ ์ค ๋์ 1๋ฐ์ดํธ์๋ง ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์์ 5๊ฐ์ ๋ฐ์ดํธ๊ฐ ๋ค์ด์จ๋ค๋ฉด read() ๋ฉ์๋๋ก 1๋ฐ์ดํธ์ฉ 5๋ฒ ์ฝ์ ์ ์๋ค.
๋ ์ด์ ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ๋ฐ์ดํธ๋ฅผ ์ฝ์ ์ ์๋ค๋ฉด read()๋ -1์ ๋ฆฌํดํ๋ค. ์ด๊ฒ์ ์ด์ฉํ๋ฉด ์ฝ์ ์ ์๋ ๋ง์ง๋ง ๋ฐ์ดํธ๊น์ง ๋ฃจํ๋ฅผ ๋๋ฉฐ ํ ๋ฐ์ดํธ์ฉ ์ฝ์ ์ ์๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ๋งค๊ฐ๊ฐ์ผ๋ก ์ฃผ์ด์ง ๋ฐ์ดํธ ๋ฐฐ์ด(b)์ ๊ธธ์ด๋งํ ๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ์ ๋ฐ์ดํธ ์๋ฅผ ๋ฆฌํดํ๋ค. ์ค์ ๋ก ์ฝ์ ๋ฐ์ดํธ ์๊ฐ ๊ธธ์ด๋ณด๋ค ์์ ๊ฒฝ์ฐ ์ฝ์ ์๋งํผ๋ง ๋ฆฌํดํ๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์์ 5๊ฐ์ ๋ฐ์ดํธ๊ฐ ๋ค์ด์จ๋ค๋ฉด ๊ธธ์ด 3์ธ ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ๋ ๋ฒ ์ฝ์ ์ ์๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ๋ฐ์ดํธ๋ฅผ ๋ ์ด์ ์ฝ์ ์ ์๋ค๋ฉด -1์ ๋ฆฌํดํ๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 100๊ฐ์ ๋ฐ์ดํธ๊ฐ ๋ค์ด์จ๋ค๋ฉด read() ๋ฉ์๋๊ฐ 100๋ฒ ๋ฃจํํด์ ์ฝ๋๋ค(100๋ฒ ์คํ๋๋ค๋ ๋ง)
read(byte[] b) ๋ฉ์๋๋ ํ ๋ฒ ์ฝ์๋ ๋ฐฐ์ด ๊ธธ์ด ๋งํผ ์ฝ๊ธฐ ๋๋ฌธ์ ๋ฃจํ ํ์๊ฐ ์ค์ด๋ ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ง์ ์์ ๋ฐ์ดํธ๋ฅผ ์ฝ์ ๋๋ read(byte[] b) ์ฌ์ฉํ๋ค.
์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ len๊ฐ์ ๋ฐ์ดํธ๋งํผ ์ฝ๊ณ , ๋ฐ์ดํธ ๋ฐฐ์ด b[off] ๋ถํฐ len๊ฐ๊น์ง ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฝ์ ๋ฐ์ดํธ ์์ธ len๊ฐ๋ฅผ ๋ฆฌํดํ๋ค. ์ค์ ์ฝ์ ๋ฐ์ดํธ ์๊ฐ len๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ ์ฝ์ ์๋งํผ ๋ฆฌํดํ๋ค.
๋ ์ด์ ์ฝ์ ์ ์๋ค๋ฉด -1์ ๋ฆฌํดํ๋ค.
read(byte[] b)์ ์ฐจ์ด์ ์ ํ ๋ฒ์ ์ฝ๋ ๋ฐ์ดํธ ์๋ฅผ len ๋งค๊ฐ๊ฐ์ผ๋ก ์กฐ์ ํ ์ ์๊ณ ๋ฐฐ์ด์์ ์ ์ฅ์ด ์์๋๋ ์ธ๋ฑ์ค(off)๋ฅผ ์ง์ ํ ์ ์๋ค๋ ์ ์ด๋ค.
InputStream์ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์๋ close() ๋ฉ์๋ ์ฌ์ฉํ๋ค.
๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ต์์ ํด๋์ค๋ก ์ถ์ ํด๋์ค์ด๋ค.
๋งค๊ฐ ๋ณ์ int b ๊ฐ์์ ๋์ ์๋ 1๋ฐ์ดํธ๋ง ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณด๋ธ๋ค. ๋งค๊ฐ ๋ณ์๊ฐ Int ํ์ ์ด๋ผ๊ณ 4๋ฐ์ดํธ ๋ชจ๋๋ฅผ ๋ณด๋ด๋๊ฒ์ ์๋๋ค.
๋งค๊ฐ๊ฐ์ผ๋ก ์ฃผ์ด์ง ๋ฐ์ดํธ ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณด๋ธ๋ค.
b๋ฐฐ์ด์์ off๋ถํฐ len๊ฐ์ ๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณด๋ธ๋ค.
์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ด๋ถ์ ์์ ๋ฒํผ(buffer)๊ฐ ์์ด์ ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๊ธฐ ์ ์ ๋ฒํผ์ ์์ฌ์๋ค๊ฐ ์์๋๋ก ์ถ๋ ฅ๋๋ค.
flush() ๋ฉ์๋๋ ๋ฒํผ์ ์๋ฅํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ถ๋ ฅ์ํค๊ณ ๋ฒํผ๋ฅผ ๋น์ฐ๋ ์ญํ ์ ํ๋ค.
๋ ์ด์ ์ถ๋ ฅํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด flush() ํธ์ถ ํ close() ํธ์ถํ๋ค.
์๋ฐ์์ ์ ์ถ๋ ฅ์ ์ฌ์ฉ๋๋ ๊ฒ์ ์คํธ๋ฆผ์ด๋ผ๋ ๋ฐ์ดํฐ ํต๋ก๋ฅผ ํตํด ์ด๋ํ๋ค. ๊ฐ์ฒด๋ ๋ฐ์ดํธํ์ด ์๋๋ผ์ ์คํธ๋ฆผ์ ํตํด ํ์ผ์ ์ ์ฅํ๊ฑฐ๋ ๋คํธ์ํฌ๋ก ์ ์กํ ์ ์๋ค. ๊ฐ์ฒด๋ฅผ ์คํธ๋ฆผ์ ํตํด ์ ์ถ๋ ฅํ๋ ค๋ฉด ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ๋ณํํ๋ ๊ฒ์ด ํ์ํํ๋ฐ, ์ด๋ฅผ โ์ง๋ ฌํโ๋ผ๊ณ ํ๋ค. ๋ฐ๋๋ก ์คํธ๋ฆผ์ ํตํด ๋ฐ์ ์ง๋ ฌํ๋ ๊ฐ์ฒด๋ฅผ ์๋ ๋ชจ์์ผ๋ก ๋ง๋๋ ๊ณผ์ ์ ์ญ์ง๋ ฌํ๋ผ๊ณ ํ๋ค.
๊ฐ์ฒด์ ํ๋๋ง ์ง๋ ฌํ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฉ์๋๋ ์ ์ ํ๋๋ ์ง๋ ฌํ๋์ง ์๋๋ค.
โtransientโ ํค์๋๋ก ์ง์ ๋ ๊ฒฝ์ฐ๋ ์ง๋ ฌํ๋์ง ์๋๋ค.
๋ก๊ทธ๋จ ์คํ ์ค์ ์๋ฐ ํด๋์ค์ ์ ๋ณด๋ฅผ ๊ฒ์ฌํ๊ณ ์์ ํ ์ ์๋ ๋ฅ๋ ฅ์ ๋งํ๋ค. Java์ ๋ฆฌํ๋ ์ API๋ java.lang.reflect ํจํค์ง์ ์ ์๋์ด ์๋ค.
Class ๊ฐ์ฒด๋ฅผ ํตํด ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์๋ค.Field ๊ฐ์ฒด๋ฅผ ํตํด ํ๋์ ๊ฐ์ ์ฝ๊ฑฐ๋ ์ค์ ํ ์ ์๋ค.Method ๊ฐ์ฒด๋ฅผ ํตํด ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.Constructor ๊ฐ์ฒด๋ฅผ ํตํด ์์ฑ์๋ฅผ ํธ์ถํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.equals() ๋ ๋ด์ฉ์ ๋น๊ตํ๊ณ == ๋ ์ฃผ์ ๊ฐ์ ๋น๊ตํ๋ค.
=== ๋ ์๋ฐ ์คํฌ๋ฆฝํธ์์๋ง ์ฌ์ฉํ๋ค. ๊ฐ๊ณผ ๋ฐ์ดํฐ ํ์์ด ๋ชจ๋ ๊ฐ์์ง ์๊ฒฉํ๊ฒ ๋น๊ตํ๋ค.
equals() ๋์ ์ฌ์ฉ
์ฒ์ ์๋ฐ๋ฅผ ๋ฐฐ์ธ ๋๋ถํฐ ์ต์ํ๊ฒ ์ฌ์ฉํ๋ ํด๋์ค์ ๋ฉ์๋๋ค์ด์๋ค. ์ด๋ฒ์ ๋ค์ ๊ณต๋ถํ๋ฉด์ ๊ทธ๋์ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ธฐ๋ง ํ๋ ์ฝ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ฒ ๋์๋ค.
์ต์ํ๋ ๋ฌธ๋ฒ์ด ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ์๊ฒ ๋๋ ๋ ๊น์ด ์๋ ํ์ต์ด ๊ฐ๋ฅํด์ก๋ค.