"์•„๋ฏธ๊ณ , ์—ด ์˜ค๋‘๋ง‰!"

"์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค, ํ•จ์žฅ๋‹˜!"

"์•ˆ์‹ฌํ•ด, ์•„๋ฏธ๊ณ . ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋žจ์ด ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด Java ๋ฌธ ํ•˜๋‚˜๋ฅผ ์—ฐ๊ตฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ท€๋ฅผ ๋ง‰์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค."

"๋‚˜๋Š” ๋ชจ๋‘ ๊ท€์ž…๋‹ˆ๋‹ค."

"Java ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ๋•Œ๋•Œ๋กœ Java ์‹œ์Šคํ…œ ์™ธ๋ถ€์˜ ์—”ํ„ฐํ‹ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋””์Šคํฌ์˜ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ด๋Ÿฌํ•œ ์—”ํ„ฐํ‹ฐ๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค."

"๊ทธ๋Ÿผ ๋‚ด๋ถ€ ์ž์›์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"

"๋‚ด๋ถ€ ๋ฆฌ์†Œ์Šค๋Š” Java ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉ์€ ๋‹ค์Œ ์ฒด๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Try-with-resources ๋ฌธ

"์šด์˜ ์ฒด์ œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์ถ”์ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ณต์œ  ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น ํŒŒ์ผ์„ ๋ณ€๊ฒฝ(๋˜๋Š” ์‚ญ์ œ)ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์›์น™์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ๋กœ ์ œํ•œ๋˜์ง€๋งŒ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

"์šด์˜ ์ฒด์ œ์—๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ํš๋“ ๋ฐ/๋˜๋Š” ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ(API)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค๋ฅผ ํš๋“ํ•œ ํ”„๋กœ๊ทธ๋žจ๋งŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ.

"์‚ฌ๋ฌด์‹ค์—์„œ ์ปคํ”ผ ๋จธ๊ทธ๋ฅผ ๊ณต์œ ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์„ธ์š”. ๋ˆ„๊ตฐ๊ฐ€ ๋จธ๊ทธ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋” ์ด์ƒ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋จธ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์”ป๊ณ  ์ œ์ž๋ฆฌ์— ๋„ฃ์œผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋‹ค์‹œ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

"์•Œ์•˜๋‹ค. ์ง€ํ•˜์ฒ ์ด๋‚˜ ๋‹ค๋ฅธ ๋Œ€์ค‘๊ตํ†ต์˜ ์ขŒ์„๊ณผ ๊ฐ™๋‹ค. ์ž๋ฆฌ๊ฐ€ ๋น„์–ด ์žˆ์œผ๋ฉด ์•„๋ฌด๋‚˜ ํƒˆ ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฆฌ๊ฐ€ ๊ฝ‰ ์ฐจ๋ฉด ๊ทธ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•œ ์‚ฌ๋žŒ์ด ์กฐ์ข…ํ•œ๋‹ค."

"๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ด์ œ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค ํ™•๋ณด ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋žจ์ด ๋””์Šคํฌ์˜ ํŒŒ์ผ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค Java ์‹œ์Šคํ…œ์€ ์šด์˜ ์ฒด์ œ์— ๋…์  ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ Java ์‹œ์Šคํ…œ์€ ๊ทธ๊ฒƒ.

"ํ•˜์ง€๋งŒ ํŒŒ์ผ ์ž‘์—…์„ ๋งˆ์นœ ํ›„์—๋Š” ์ด ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ)๋ฅผ ํ•ด์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Œ์„ ์šด์˜ ์ฒด์ œ์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฆฌ์†Œ์Šค๋Š” ๊ณ„์† ํ•ด์„œ ๋‹น์‹ ์˜ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ๊ฐœ์ตœ๋ฉ๋‹ˆ๋‹ค."

"๊ณตํ‰ํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค."

"๊ทธ๋ ‡๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์šด์˜ ์ฒด์ œ๋Š” ์‹คํ–‰ ์ค‘์ธ ๊ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐจ์ง€ํ•˜๋Š” ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก์„ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋ฉด ์šด์˜ ์ฒด์ œ๋Š” ๋” ์ด์ƒ ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค ์žก์•„๋จน๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐ™์œผ๋‹ˆ๋ผ๊ณ ..."

"๊ทธ๋Ÿฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ์†Œ์‹์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด์ œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์šด์˜ ์ฒด์ œ ์ž์ฒด๊ฐ€ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•จ)."

"๊ทธ๊ฒŒ ์ข‹์€ ์†Œ์‹์ด๋ผ๋ฉด ๋‚˜์œ ์†Œ์‹์ด ์žˆ๋‹ค๋Š” ๋œป์ธ๊ฐ€์š”?"

"์ •ํ™•ํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋‚˜์œ ์†Œ์‹์€ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค๋ฉด..."

"๊ทธ๋Ÿฐ๋ฐ ์ œ๊ฐ€ ๊ทธ๋Ÿฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๊นŒ?"

"๋งŽ์€ ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด Java๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ์—…๋ฌด์šฉ์œผ๋กœ ์ž‘์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ๋ฉฐ์น , ๋ช‡ ์ฃผ, ๋ช‡ ๋‹ฌ ๋™์•ˆ ์‰ฌ์ง€ ์•Š๊ณ  ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ."

"์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ•ด์ œ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค."

"์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋ฃจ์— 100๊ฐœ์˜ ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ซ์ง€ ์•Š์œผ๋ฉด ๋ช‡ ์ฃผ ์•ˆ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฆฌ์†Œ์Šค ์ œํ•œ์— ๋„๋‹ฌํ•˜๊ณ  ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค."

"์•ˆ์ •์ ์ธ ์ผ์„ ๋ช‡ ๋‹ฌ ๋™์•ˆ ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค! ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์—๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค close().

"๋‹ค์Œ์€ ํŒŒ์ผ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์“ด ๋‹ค์Œ ์™„๋ฃŒ๋˜๋ฉด ํŒŒ์ผ์„ ๋‹ซ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์šด์˜ ์ฒด์ œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธ ๋ฉ”๋ชจ
String path = "c:\\projects\\log.txt";
FileOutputStream output = new FileOutputStream(path);
output.write(1);
output.close();
ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.
ํŒŒ์ผ ๊ฐœ์ฒด ๊ฐ€์ ธ์˜ค๊ธฐ: ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
ํŒŒ์ผ์— ์“ฐ๊ธฐ
ํŒŒ์ผ ๋‹ซ๊ธฐ - ๋ฆฌ์†Œ์Šค ํ•ด์ œ

"์•„... ๊ทธ๋ž˜์„œ ํŒŒ์ผ(๋˜๋Š” ๋‹ค๋ฅธ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค) ์ž‘์—…์„ ๋งˆ์นœ ํ›„์—๋Š” close()์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค์— ์—ฐ๊ฒฐ๋œ ๊ฐœ์ฒด์— ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."

"์˜ˆ. ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•ด์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๋‚˜์ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?"

"๋ฉ”์„œ๋“œ๊ฐ€ ํ•ญ์ƒ ํ˜ธ์ถœ๋˜๋„๋ก ํ•˜๋ ค๋ฉด ์ฝ”๋“œ๋ฅผ - - ๋ธ”๋ก์œผ๋กœ ๋ž˜ํ•‘ํ•˜๊ณ  ๋ธ”๋ก ์— ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ close()ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.trycatchfinallyclose()finally

try
{
   FileOutputStream output = new FileOutputStream(path);
   output.write(1);
   output.close();
}
catch (IOException e)
{
   e.printStackTrace();
}
finally
{
   output.close();
}

"์Œ... ๋ญ”๊ฐ€ ์ด์ƒํ•ด?"

"๋งž์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. output๋ณ€์ˆ˜๊ฐ€ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜์–ด ๋ธ”๋ก try{}์—์„œ ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค finally.

์ˆ˜์ •ํ•˜์ž:

FileOutputStream output = new FileOutputStream(path);

try
{
   output.write(1);
   output.close();
}
catch (IOException e)
{
   e.printStackTrace();
}
finally
{
   output.close();
}

"์ด์ œ ๋‹ค ๊ดœ์ฐฎ์•„?"

"๊ดœ์ฐฎ์ง€๋งŒ FileOutputStream๊ฐœ์ฒด๋ฅผ โ€‹โ€‹์ƒ์„ฑํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋Š” ๋งค์šฐ ์‰ฝ๊ฒŒ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •ํ•˜์ž:

FileOutputStream output = null;

try
{
   output = new FileOutputStream(path);
   output.write(1);
   output.close();
}
catch (IOException e)
{
   e.printStackTrace();
}
finally
{
   output.close();
}

"๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?"

FileOutputStream"์—ฌ์ „ํžˆ ๋ช‡ ๊ฐ€์ง€ ๋น„ํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด output๋ณ€์ˆ˜๊ฐ€ null์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€๋Šฅ์„ฑ์€ ๋ธ”๋ก์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค finally.

"๋‘˜์งธ, close()๋ฉ”์†Œ๋“œ๋Š” ํ•ญ์ƒ ๋ธ”๋ก์—์„œ ํ˜ธ์ถœ๋˜๋ฉฐ finally์ด๋Š” try๋ธ”๋ก์—์„œ ํ•„์š”ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

FileOutputStream output = null;

try
{
   output = new FileOutputStream(path);
   output.write(1);
}
catch (IOException e)
{
   e.printStackTrace();
}
finally
{
   if (output!=null)
      output.close();
}

catch" ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ 3์ค„์˜ ์ฝ”๋“œ๊ฐ€ 10์ด ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ์„ ์—ด๊ณ  1์„ ์ผ์„ ๋ฟ์ž…๋‹ˆ๋‹ค."

"ํ›„์šฐ.. ๊ฒฐ๋ก ์€ ์ž˜๋‚ฌ๋„ค. ๋น„๊ต์  ์ดํ•ด๋Š” ๊ฐ€์ง€๋งŒ, ์ข€ ์ง€๋ฃจํ•˜์ง€ ์•Š๋‚˜?"

"๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ Java ์ œ์ž‘์ž๊ฐ€ ๊ตฌ๋ฌธ ์„คํƒ•์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์šฐ๋ฆฌ๋ฅผ ๋„์™”์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•˜์ด๋ผ์ดํŠธ ๋˜๋Š” ์ด ๊ฐ•์˜๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

try-with-resources

"7๋ฒˆ์งธ ๋ฒ„์ „๋ถ€ํ„ฐ Java์—๋Š” ์ƒˆ๋กœ์šด try-with-resources ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ•„์ˆ˜ ํ˜ธ์ถœ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค close()."

"์œ ๋งํ•˜๊ฒŒ ๋“ค๋ฆฐ๋‹ค!"

"์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

try (ClassName name = new ClassName())
{
   Code that works with the name variable
}

"๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ try ์ง„์ˆ  ์˜ ๋˜ ๋‹ค๋ฅธ ๋ณ€ํ˜•์ž…๋‹ˆ๊นŒ ?"

"์˜ˆ. ํ‚ค์›Œ๋“œ ๋’ค์— ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ try๊ด„ํ˜ธ ์•ˆ์— ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์„น์…˜ finally๊ณผ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค close().

"๋‹ค์Œ์€ ๋™๋“ฑํ•œ ๋‘ ๊ฐ€์ง€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๊ธด ์ฝ”๋“œ try-with-resources๊ฐ€ ํฌํ•จ๋œ ์ฝ”๋“œ
FileOutputStream output = null;

try
{
   output = new FileOutputStream(path);
   output.write(1);
}
finally
{
   if (output!=null)
   output.close();
}
try(FileOutputStream output = new FileOutputStream(path))
{
   output.write(1);
}

"๋ฉ‹์ง€๋„ค์š”! -with-resources๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋Š” tryํ›จ์”ฌ ๋” ์งง๊ณ  ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ ์„์ˆ˜๋ก ์˜คํƒ€๋‚˜ ๊ธฐํƒ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค."

"๋งˆ์Œ์— ๋“œ์…จ๋‹ค๋‹ˆ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ -with-resources ๋ฌธ์„ ์ถ”๊ฐ€ catchํ•˜๊ณ  finally์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค try. ๋˜๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋™์‹œ์— ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜

"๋™์‹œ์— ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋ณต์‚ฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ํŒŒ์ผ์˜ ๋‘ ๊ฐœ์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. .

"์ด ๊ฒฝ์šฐ try-with-resources ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ์•ˆ์— ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์˜ ์ผ๋ฐ˜์ ์ธ ๋ชจ์–‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

try (ClassName name = new ClassName(); ClassName2 name2 = new ClassName2())
{
   Code that works with the name and name2 variables
}

ํŒŒ์ผ ๋ณต์‚ฌ์˜ ์˜ˆ:

์งง์€ ์ฝ”๋“œ ๊ธด ์ฝ”๋“œ
String src = "c:\\projects\\log.txt";
String dest = "c:\\projects\\copy.txt";

try(FileInputStream input = new FileInputStream(src);

FileOutputStream output = new FileOutputStream(dest))
{
   byte[] buffer = input.readAllBytes();
   output.write(buffer);
}
String src = "c:\\projects\\log.txt";
String dest = "c:\\projects\\copy.txt";

FileInputStream input = null;
FileOutputStream output = null;

try
{
   input = new FileInputStream(src);
   output = new FileOutputStream(dest);

   byte[] buffer = input.readAllBytes();
   output.write(buffer);
}
finally
{
   if (input!=null)
      input.close();
   if (output!=null)
      output.close();
}

"๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? try-with-resources๋Š” ๋ฉ‹์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!"

"์šฐ๋ฆฌ๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค."