Week13(I/O)

์ŠคํŠธ๋ฆผ (Stream) / ๋ฒ„ํผ (Buffer) / ์ฑ„๋„ (Channel) ๊ธฐ๋ฐ˜์˜ I/O

์ŠคํŠธ๋ฆผ (Stream)

์ŠคํŠธ๋ฆผ( Stream )์ด๋ž€ ๋‹จ์ผ ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ์†์ ์œผ๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ์ž๋ฃŒ์˜ ์ž…์ถœ๋ ฅ์„ ๋„์™€์ฃผ๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ฒ ๋‹ค

๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ์„œ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค

  • ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(Byte Stream)

    • ๋ฐ์ดํ„ฐ๋ฅผ Byte ๋‹จ์œ„๋กœ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์„ ์˜๋ฏธ

    • binary ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ

    • ์ด๋ฏธ์ง€, ๋™์˜์ƒ๋“ฑ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์†ก์ˆ˜์‹ ํ•  ๋–„ ์ฃผ๋กœ ์‚ฌ์šฉ

    • ๋Œ€ํ‘œ์ ์ธ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์—๋Š” ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์˜ InputStream๊ณผ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์˜ OutputStream์ด ์žˆ๊ณ  ์ด ๋‘ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” byte๊ธฐ๋ฐ˜ stream์˜ ์ตœ๊ณ  ์กฐ์ƒ์ด๋‹ค

  • ๋ฌธ์ž ์ŠคํŠธ๋ฆผ (Character Stream)

    • ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ์ŠคํŠธ๋ฆผ

    • ํ…์ŠคํŠธ ํŒŒ์ผ๋“ฑ์„ ์†ก์ˆ˜์‹ ํ•  ๋–„ ์ฃผ๋กœ ์‚ฌ์šฉ

ํ•˜์ง€๋งŒ ์ด ๋‘ stream์€ ๋ชจ๋‘ ์ฒ˜์Œ์—๋Š” Byte๋กœ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์€ ๋™์ผํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น Stream์ด ์•Œ์•„์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

๋ฒ„ํผ (Buffer)

๋ฒ„ํผ (Buffer)๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์ƒํ˜ธ ๊ฐ„์˜ ์žฅ์น˜์—์„œ ๊ณ ์†์˜ ์žฅ์น˜์™€ ์ €์†์˜ ์žฅ์น˜ ๊ฐ„์˜ ์†๋„ ์ฐจ์ด๋กœ ์ธํ•ด ์ €์†์˜ ์žฅ์น˜๊ฐ€ ์ž‘์—…์„ ์ถ”๋ฆฌํ•˜๋Š” ๋™์•ˆ, ๊ณ ์†์˜ ์žฅ์น˜๊ฐ€ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ํ˜„์ƒ์„ ์ค„์—ฌ์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž„์‹œ์ €์žฅ์žฅ์น˜๋กœ ๋ถˆ๋ฆฌ์šด๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•ด๋ดค๋‹ค

์ด๋ ‡๊ฒŒ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์šด์˜์ฒด์ œ์˜ API ํ˜ธ์ถœ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์„œ ์ž…์ถœ๋ ฅ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

(์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€๋•Œ Scanner ๋ฐฉ์‹๊ณผ BufferedReader๋ฐฉ์‹์ด ์žˆ์—ˆ๋Š”๋ฐ buffer์˜ ๊ฐœ๋…์„ ์ด๋ ‡๊ฒŒ ์•Œ๊ณ  ๋‚˜๋‹ˆ๊นŒ ์‹ ๊ธฐํ–ˆ๋‹ค.)

์ฑ„๋„ (Channel)

์ฑ„๋„์€ ํ•œ ๋งˆ๋””๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ ํ†ต์‹  ์ˆ˜๋‹จ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰ ํ•œ ๊ฐœ ์ด์ƒ์˜ ํ™•์‹คํ•œ ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐฉ๋œ ์—ฐ๊ฒฐ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฑ„๋„์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋‹ซํžˆ๊ณ  ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ์ฑ„๋„์˜ ์ž…์ถœ๋ ฅ ์ž‘์—…์œผ๋กœ ๋ธ”๋กํ™” ๋˜๋ฉด, ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ธ”๋กํ™”๋œ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํŒŒ์ผ์ž…์ถœ๋ ฅ์—์„œ ๋ธ”๋กํ™”๋œ ์Šค๋ ˆ๋“œ๋ฅผ ์–ธ์ œ๋‚˜ ์ค‘์ง€์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด์„œ ๋„คํŠธ์›Œํฌ์—์„œ non-blockin ์ž…์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•ด์ง

์ฝ, ์“ฐ๊ธฐ๋ฅผ ๋™์‹œ์— ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋ฉฐ ์ฑ„๋„์˜ ๊ธฐ๋ณธ ์ž…์ถœ๋ ฅ ๋ฒ„ํผ๋Š” BtyeBuffer ์ด๊ธฐ ๋–„๋ฌธ์— ๋ฐ์ดํ„ฐ ํ˜•์— ๋งž๋Š” ์ „์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

InputStream, OutputStream

InputStream์ด๋ž€

์œ„์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค(์ถ”์ƒ ํด๋ž˜์Šค)์ด๋‹ค. ๊ทธ ์˜๋ฏธ๋Š” ๋ชจ๋“  ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์€ ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.

InputStream ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋“ค

  • int available() : ํ˜„์žฌ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

  • void close() : ํ˜„์žฌ ์—ด๋ ค์žˆ๋Š” InputStream์„ ๋‹ซ๋Š”๋‹ค

  • void mark(int readlimit) : InputStream์—์„œ ํ˜„์žฌ์˜ ์œ„์น˜๋ฅผ ํ‘œ์‹œ

  • boolean markSupported() : ํ•ด๋‹น InputStream์—์„œ mark()๋กœ ์ง€์ •๋œ ์ง€์ ์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ

  • abstract int read() : InputStream์—์„œ ํ•œ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด์„œ int ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

  • int read(byte[] b) : ์ธ์ž ๋งŒํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ b์— ์ €์žฅํ•˜๊ณ  ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜ ๋ฐ˜ํ™˜

  • int read(byte b, int off, int len) : len๋งŒํผ ์ฝ์–ด์„œ b์˜ off์œ„์น˜์— ์ €์žฅํ•˜๊ณ  ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜ ๋ฐ˜ํ™˜

  • void reset() : mark()๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜ธ์ถœํ•œ ์œ„์น˜๋กœ ์ด๋™

  • long skip(long n) : InputStream์—์„œ n๋ฐ”์ดํŠธ ๋งŒํผ ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํ‚ตํ•˜๊ณ  ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

OutputStream์ด๋ž€

์œ„์—์„œ๋„ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์˜ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค(์ถ”์ƒ ํด๋ž˜์Šค)์ด๋‹ค. ๊ทธ ์˜๋ฏธ๋Š” ๋ชจ๋“  ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์€ ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.

OutputStream ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋“ค

  • void close() : OutputStream์„ ๋‹ซ๋Š”๋‹ค

  • void flush() : ๋ฒ„ํผ์— ๋‚จ์•„์žˆ๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ถœ๋ ฅ

  • void write(byte[] b) : ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ถœ๋ ฅ

  • void write(byte[] b, int off, int len) : b ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ์‹œ์ž‘ off๋ถ€ํ„ฐ len๋งŒํผ ์ถœ๋ ฅ

  • abstract void write(int b) : ์ •์ˆ˜ b์˜ ํ•˜์œ„ 1๋ฐ”์ดํŠธ๋ฅผ ์ถœ๋ ฅ

ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ (System.in, System.out, System.err)

System ํด๋ž˜์Šค๋Š” ์‹คํ–‰์‹œ๊ฐ„ ํ™˜๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

System ํด๋ž˜์Šค์—์„œ ์ œ๊ณต๋˜๋Š” out๊ณผ in์„ ์ด์šฉํ•œ ํ‘œ์ค€ ์ž…๋ ฅ, ์ถœ๋ ฅ, ์—๋Ÿฌ ์ถœ๋ ฅ์— ๊ด€ํ•œ ํด๋ž˜์Šค ๋ณ€์ˆ˜, ์™ธ๋ถ€์ ์œผ๋กœ ์ •์˜๋œ ํ”„๋กœํผํ‹ฐ ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ์ ‘๊ทผ, ํŒŒ์ผ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋กœ๋”ฉ ๋ฐฉ๋ฒ•, ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์™€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ๋ฉ”์†Œ๋“œ

System.in

System.in ์˜ ๋ณ€์ˆ˜ ํƒ€์ž…์ด InputStream ํ˜•ํƒœ๋กœ ์ง€์ •์ด ๋˜์–ด์žˆ๋‹ค.

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ InputStream์€ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ด๋ฉด์„œ ์ถ”์ƒ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— InputStream์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋‹ค

System.in ์„ ํ†ตํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๊ฐ์ฒด๋Š” JVM์ด ๋ฉ”๋ชจ๋ฆฌ๋กœ ์˜ฌ๋ผ์˜ค๋ฉด์„œ ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋‘๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด์ด๋‹ค. ์ž๋ฃŒํ˜•์ด InputStream์ด๊ธฐ ๋–„๋ฌธ์— ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ๋งŒ ์ž…์ถœ๋ ฅ๋œ๋‹ค.

ํ‚ค๋ณด๋“œ์—์„œ ์ž…๋ ฅํ•˜๋Š” ์ž๋ฃŒ๋Š” ๋•Œ์— ๋”ฐ๋ผ์„œ ๋‘ ๋ฐ”์ดํŠธ๊ฐ€ ํ•ฉ์ณ์ ธ์•ผ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ System.in์„ ํ†ตํ•ด์„œ ์ฝ์„ ๋•Œ๋Š” ์˜๋ฌธ๊ณผ ํ•œ๊ธ€์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๊ตฌ์„ฑํ•ด์•ผ ์ž˜ ์ธ์‹๋œ๋‹ค.

System.out

๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ System.out.println์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ณธ ํ•จ์ˆ˜์ด๋‹ค

System.out ๋ณ€์ˆ˜๋Š” ํ‘œ์ค€ ์ถœ๋ ฅ ์žฅ์น˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ€ํ‘œ์ ์ธ ์ถœ๋ ฅ ๋ณ€์ˆ˜์ด๋‹ค.

System.out์€ PrintStream ํƒ€์ž…์œผ๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ PrintStream์ด๋ž€ OutputStream ํด๋ž˜์Šค์˜ ํ›„์† ํด๋ž˜์Šค๋กœ Exception์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ๋ฉ”์†Œ๋“œ๋กœ๋งŒ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ตณ์ด try-catch ๋ฌธ ๊ฐ™์ด ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‹ค

System.err

System.err ๊ฐ์ฒด๋Š” ํ‘œ์ค€ ์—๋Ÿฌ ์ถœ๋ ฅ ์žฅ์น˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด System.err๋กœ ์•Œ๋ ค์ค˜์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด ๋‚˜์˜จ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

System.err ๋Š” PrintStream ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ System.out์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™๋‹ค.

ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๊ธฐ

์ž๋ฐ”์—์„œ ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ๋ฒ•์€ ์ž๋ฐ”์˜ ๋‚ด์žฅ ํด๋ž˜์Šค์ธ FileWriter, BufferedWriter, FileReader, BufferedReader๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

์—ฌ๊ธฐ์„œ ํŒŒ์ผ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•œ BufferedWriter์™€ FileWriter์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ try-catch์˜ ๋งˆ์ง€๋ง‰ finally block์—์„œ null check ๋ฐ close()ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•ด ์ค˜์•ผ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” java 7์— ๋„์ž…๋œ try catch with resources์„ ์‚ฌ์šฉํ•ด์„œ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค.

์ด๊ฒƒ์€ try catch block์—์„œ ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ close() ํ•ด์ฃผ๋Š” ํ–ฅ์ƒ๋œ try catch๋ฌธ๋ฒ•์ด๋‹ค

import java.io.*;

public class Main{
    public static void main(String[] args) {
      //ํŒŒ์ผ์„ ์“ฐ๋Š”(์—†์œผ๋ฉด ์ƒ์„ฑ)ํ•˜๋Š” ์ฝ”๋“œ
        try(
          //์—ฌ๊ธฐ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ๋˜๋ฉด try๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ์ž๋™์œผ๋กœ close๋œ๋‹ค
                FileWriter fw = new FileWriter("Testing.txt", true);
                BufferedWriter bw = new BufferedWriter(fw);
                )
        {
          //๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ 
            bw.write("first Test");
          //๋ฒ„ํผ์— ์ƒˆ๋กœ์šด ์ค„์„ ๋„ฃ์–ด์ฃผ๊ณ 
            bw.newLine();
            bw.write("Second Test");
            bw.newLine();
          //๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ํŒŒ์ผ์— ์ž‘์„ฑ
            bw.flush();
        }catch(IOException e){
            System.out.println(e);
        }

        File f = new File("Testing.txt");
      //ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ์ง€ ํ™•์ธ
        if(f.isFile()){
            System.out.println("Testing.txt ํŒŒ์ผ์ด ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.");
        }

      //ํŒŒ์ผ์„ ์ฝ๋Š” ์ฝ”๋“œ
        try(
                FileReader rw = new FileReader("Testing.txt");
                BufferedReader br = new BufferedReader(rw);
                ){
            String readLine = null;
          //๋งŒ์•ฝ ์ฝ์„๋ผ์ธ์ด ์—†๋‹ค๋ฉด null์„ ๋ฆฌํ„ดํ•œ๋‹ค
            while((readLine = br.readLine()) != null){
                System.out.println(readLine);
            }
        }catch (IOException e){
            System.out.println(e);
        }


    }
}

์œ„ ์ฝ”๋“œ ์‹คํ–‰๊ฒฐ๊ณผ

์‹ค์ œ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๊ฒƒ๊ณผ ๋‚ด์šฉ ํ™•์ธ

์ฐธ๊ณ ์‚ฌ์ดํŠธ

https://victorydntmd.tistory.com/134

https://real-dongsoo7.tistory.com/70

https://m.blog.naver.com/PostView.nhn?blogId=redbird38&logNo=120095618390&proxyReferer=https:%2F%2Fwww.google.com%2F

https://develop-im.tistory.com/54

https://hyeonstorage.tistory.com/235

https://vmpo.tistory.com/63

https://vmpo.tistory.com/entry/java-try-catch-with-resources-์˜ˆ์™ธ์ฒ˜๋ฆฌ?category=731823

Last updated

Was this helpful?