์คํธ๋ฆผ
์ด๋ ํ ๋ฐฉํฅ์ผ๋ก์ ๋ฌผ๊ฒฐ, ํ๋ฆ์ ์๋ฏธํ๋ค
์ฐ๋ฆฐ ์ธ์์คํธ๋ฆผ์ ๋์๊ฐ๊ณ ์๋ค๊ณ ๋ ํ ์ ์๋ค
ํ์ง๋ง ๊ตฌ์ฒด์ ์ผ๋ก๋ ์ถ์์ ์๋ฏธ๋ณด๋จ ๋์ด๋์ฐ์ ์ค์ง์ด ์ ์๋ฏ์ด,
ํน์ ์ํ์์ฒ๋ผ ๋ญ๊ฐ์ ๋ฌผ์ฒด๋ค์ด ๋๊น์์ด ๋์ด์ ์๋ ๊ฒ์ด๋ผ๊ณ
๋ณผ ์ ์๋ค. ํ๋ก๊ทธ๋จ์์๋ ํต๋ก, ๊ธธ์ ์๋ฏธ๊ฐ ๊ฐ์ฅ ์ ํฉํ๋ค
์ ์ถ๋ ฅ ์คํธ๋ฆผ
InputStream ๊ณผ OutputStream ์ ๋ง๊ทธ๋๋ก ์ ์ถ๋ ฅํ๋ ํต๋ก, ๊ธธ์ ๋งํ๋ค
input, output ํด๋ ์๊ด์์๊ฒ ์ง๋ง ์ด๊ฒ์ ๊ธธ์ ์๋ฏธ๊ฐ ๋ณด์ฌ์ง์ง ์๋๋ค
101010101010111010111
์ด๋ฐ ๋ฐ์ดํฐ1 ํ๋ฆ์ด
์ค์ง์ด์ ํ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ๊ธธ์ ๋ค๋ฃฌ๋ค๋ ์๋ฏธ์์stream์ด ์ถ๊ฐ๋์๋ค.
๊ธธ์ ๊ฐ๊ฐ ์ผ๋ฐฉํตํ์ด๋ฉฐ ๋๊ฐ๋ ๊ธธ๊ณผ ๋ค์ด์ค๋ ๊ธธ ๋๊ฐ์ง๋ง ์กด์ฌํ๋ค
์ ์ถ๋ ฅ ์ฃผ์ฒด
์ด๋ณด๋ค์๊ฒ ํ๋ก๊ทธ๋๋ฐ์ด ์ด๋ ค์ด ์ด์ ์ค ํ๋๊ฐ
๋๋ฌด ๋น์ฐํ ๋ง๋ค์ด ๋ง์์, ‘๊ทธ๋ฐ๊ฐ๋ค’ ํ๊ณ ๋์ถฉ๋์ถฉ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค
๊ทธ๋ฌ๊ณ ๋ง์ ์ฝ๋ฉํ ๋ คํ๋ฉด ๊ธฐ์ต์์ค์ ๊ฑธ๋ฆฐ์ฑ๋ก
ํค๋ณด๋์์ ๋ชจ์์ด์์์ด ๋๋ค
์ต์
์ ๊ทธ ์ํ์์ ํ์ค๋ํผ๋ฅผ ํ๋ฉฐ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ผ๋ ๊ฒ์ด๋ค -ใ
-;;
๊ธฐ๋ณธ์ง์์์ ๋น์ฐํ์ง๋ง ํ๋ก๊ทธ๋๋ฐ์์ ๋น์ฐํ๊ฒ ์๋ค..
๊ทธ์ผ๋ง๋ก ๊ธฐ์ด์ ์์๋ถํฐ
ํ๋ํ๋ ๋์ง์ด๊ฐ์ง ์์ผ๋ฉด ๋คํต์ ํฌ๊ฒ ๋ง๋ ์๊ฐ ์๋ค
์
์ถ๋ ฅ์์๋ ์์ฒญ๋๊ฒ ์ค์ํ์ง๋ง
๊ทธ๋ฅ ๋์ถฉ ์๊ณ ๋์ด๊ฐ ์ ์๋๊ฒ ์๋๋ฐ ๋ฐ๋ก ์
์ถ๋ ฅ์ ์ฃผ์ฒด์ด๋ค.
์ ์ถ๋ ฅ์ ๋ฐฉํฅ์ ํ๋ก๊ทธ๋จ์ ์์ ์ผ๋ก ํ๋ค
์ด๊ฑธ ๊ทธ๋ฅ ๋๊ธฐ๋ฉด ๋ง์ ์ฝ๋ฉ๋ ํท๊ฐ๋ฆฌ๊ฒ ๋๋ค.
์ฆ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์์๋
InputStream.read(buffer);
OutputStream.write(buffer);
read๋ buffer๋ฅผ ์ฝ๊ณ , write๋ buffer์ ์ด๋ค
์ด๋ฐ์์ผ๋ก ๊ฑฐ๊พธ๋ก ์ดํดํด๋ฒ๋ฆด ์๊ฐ ์๋ค. ์ค์ ๋ก ์๋์ ๊ฐ๋ค
InputStream.read(buffer); OutputStream.write(buffer);
InputStream์์ ๊บผ๋ด์ buffer์ ์ ์ฅํ๋ ๊ฒ์ด ์
๋ ฅ์ด๊ณ
buffer๋ฅผ OutputStream์ ์ ์ฅํ๋ ๊ฒ์ด ์ถ๋ ฅ์ธ ๊ฒ์ด๋ค
InputStream์จ๊ฐ ์ฝ๋๋ค ๋ผ๊ณ ์๊ฐํด์ ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๊ฒ์ด๋ค
ํ์ง๋ง InputStream์ ์์ ๋งํ๋ฏ์ด
๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ํต๋ก์ด์ง ์ฃผ์ฒด๊ฐ ์๋๋ค
์ฃผ์ฒด๋ ์ด๋๊น์ง๋ ํ๋ก๊ทธ๋จ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์์ ์ฝ๋๋ ์ด๋ ๊ฒ ํด์์ด ๋๋ค
- ํ๋ก๊ทธ๋จ๋์ด ๋ค์ด์ค๋ ๋ฌผ๊ธธ์์ ์ฝ๊ณ (read) buffer์ ์ ์ฅํ๋ค
- ํ๋ก๊ทธ๋จ๋์ด ๋๊ฐ๋ ๋ฐ์ดํฐ์ ์ค๊ธฐ์๋ค๊ฐ buffer์ ๋ด์ฉ์ ์ด๋ค(write)
๋ชจ๋ ๊ฑธ ๊ฐ๋จํ ์์ฝํ๋ฉด
InputStream์ด web.getInputStream์ผ๋ก ๊ฐ์ ธ์ค๋ new FileInputStream() ์ด๋
์ด๋์ ๊ฐ์ ธ์ค๋๊ฐ์ ๋ฌด์กฐ๊ฑด ํ๋ก๊ทธ๋จ ์
์ฅ์์ In์ด๋ค. ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๊ธฐ๋ง ํ๋ค
๋ฐ๋๋ก OutputStream์ ๋ฌด์กฐ๊ฑด ์ถ๋ ฅ์ด๋ค. ๋ฐ์ผ๋ก ๋ด๋ณด๋ผ ์๋ฐ์ ์๋ค
์ฌ์ฉ๋ฒ
์ง์ ์ฌ์ฉ์ ํตํด์ ์ข๋ ์ ํํ ์ดํดํด๋ณด์
๋ด ์ปด์ ํ์ผ์์ ์๋ฃ๋ฅผ ์ฝ์ ํ ์น์ผ๋ก ๋ณด๋ด๊ณ ์ถ๋ค๊ณ ํ์
๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ ๊น
ํ์ผ์์ ๋ญ ์ฝ๊ณ ์ถ์ผ๋ฉด ๋จผ์ ํ์ผ๊ณผ ๋(ํ๋ก๊ทธ๋จ)์ฌ์ด์ ๊ธธ์ ๊ฐ์คํด์ผํ๋ค
๊ฐ์ค๋ฐฉ๋ฒ์ InputStream ๊ฐ์ฒด๋ฅผ ์๋ก๋ง๋ค์ด ์ฐ๊ฒฐํ๊ฑฐ๋ ์ป์ด์ค๋ฉด ๋๋ค
FileInputStream fis = new FileInputStream(ํ์ผ);
์ด๋ ๊ฒ ๋ง๋ค์๋ ์๊ณ ์ด๋์ ๊ฐ
getInputStream ํน์ openInputStream ๋ฑ๋ฑ์ผ๋ก ์ป์ด ์ฌ ์๋ ์๋ค
ํต๋ก๋ฅผ ๋ง๋ค์์ผ๋ ์ด์ ๊ทธ๊ฑธ ์ด์ฉํด์ ๋ฌผ๊ฑด์ ๋ฐ์
fis.read(buffer)
ํต๋ก๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด ์ฝ์ด๋ค์ด๋ ๊ฒ์ด๋ค
์ฝ์์ผ๋ฉด ์ ์ฅ์ ํด์ผํ๋ค. ๊ทธ๋์ ํ๋ผ๋ฉํฐ๋ก ์ ์ฅ์๋ฅผ ์ง์ ํ๋ค
์์์ buffer2๋ผ๋ ๊ณณ์ ์ ์ฅํ๋ค
์ ์ด์ web์ผ๋ก ์ฌ๋ฆฌ๋ ๊ฒ์ ์๊ฐํด๋ณด์
์๊ณผ ๋น์ทํ๋ค
์ผ๋จ ๋น์ฐํ ์ฌ๋ผ๊ฐ ํต๋ก๊ฐ ์์ด์ผํ๋ค
๊ฐ์คํ๊ณ ์ฐ๊ฒฐํ์
์ฌ๊ธฐ์ ๊ทธ๋ฐ ๊ณผ์ ์ ์ด๋ฏธ ๋ง๋ค์ด ๋์ ๋ฉ์๋3๋ฅผ ์ด์ฉํ์
OutputStream out = web.getOutputStream();
ํธํ๊ฒ ๊ฐ์คํ๋ค
์ด์ ์ ๊ธธ์ ํตํด์ ์
๋ก๋ํ๋ฉด ๋๋ค
out.write(buffer)
out ์ด๋ผ๋ ํต๋ก์๊ฐ๋ค buffer๋ฅผ write ํ๋ค.
๊ทธ๋ผ ํต๋ก๋ฅผ ํตํด buffer ๋งํผ web์ ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค
Written with StackEdit.
- ์ด๋ค ๋ฐ์ดํฐ๋ผ๋ 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ↩
- ์ฌ๊ธฐ์ ํ๊บผ๋ฒ์ ๋ค ์ฝ์ ํ ๋ชฝ๋
์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ ์ฐ์ง ์๋๋ค
์ด์ ๋ ํ๋ก๊ทธ๋จ์ด ๋จน๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ฒญ ์ปค์ง๊ธฐ ๋๋ฌธ์ด๋ค
๊ทธ๋์ ์ ๋น๋ ์ฝ๊ณ ์ฝ์ ๊ฒ์ ๋ค์ ์ฌ๋ฆฌ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ค ↩ - ๋ง์ ๊ฐ์ฒด์์๋ ์ด๋ฏธ ํต๋ก๊ฐ์ค์ ์ผ๋์ ๋๊ณ
๋ฒ๊ฑฐ๋กญ์ง ์๊ฒ ์ด๋ฌํ ๋ฉ์๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋์๋ค ↩