[JAVA] INPUT/OUTPUT

์„ฑ์žฅ์ผ๊ธฐยท2024๋…„ 7์›” 22์ผ
0

[SWCAMP] JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
12/16

์ž…์ถœ๋ ฅ

์ž…์ถœ๋ ฅ ์ •์˜ ๋ฐ ์‚ฌ์šฉ ์ด์œ 

๐Ÿ’ก Input๊ณผ Output์˜ ์•ฝ์ž๋กœ ์ปดํ“จํ„ฐ ๋‚ด๋ถ€ ๋˜๋Š” ์™ธ๋ถ€ ์žฅ์น˜์™€ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๋™์„ ์œ„ํ•œ ์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์„ ์œ„ํ•ด ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ๋œ๋‹ค.

์ŠคํŠธ๋ฆผ(Stream)์ด๋ž€?

๐Ÿ’ก ์ž…์ถœ๋ ฅ ์žฅ์น˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•œ ๋‹จ๋ฐฉํ–ฅ ํ†ต๋กœ๋กœ ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.
๊ฐ๊ฐ์˜ ์žฅ์น˜๋งˆ๋‹ค ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆผ์ด ์กด์žฌํ•˜๋ฉฐ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ฒ˜๋ฆฌ์™€ ๋ฌธ์ž ๋‹จ์œ„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.
์ŠคํŠธ๋ฆผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 1๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ง€๋‚˜๊ฐ€๊ฒŒ ๋˜๊ณ  ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๊ฐ€ 1๋ฐ”์ดํŠธ ์ด๋ฏ€๋กœ ํ•œ ๋ฐฉํ–ฅ๋งŒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋”ฐ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

  • ์˜์–ด, ์ˆซ์ž, ํŠน์ˆ˜๊ธฐํ˜ธ๋“ค์€ ํ•œ ๊ธ€์ž๊ฐ€ 1๋ฐ”์ดํŠธ ์ง€๋งŒ ํ•œ๊ธ€๊ณผ ๊ฐ™์€ ๋งŽ์€ ์–ธ์–ด๋“ค์€ ํ•œ ๊ธ€์ž๋ฅผ 1๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์— 2๋ฐ”์ดํŠธ ๋˜๋Š” 3๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค. ์•ž์„œ ๋ฐฐ์šด ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ •ํ•ด์ง€๋Š”๋ฐ ํ•ด๋‹น ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์— ๋งž์ถฐ์„œ 2๋ฐ”์ดํŠธ ๋˜๋Š” 3๋ฐ”์ดํŠธ ๋‹จ์œ„๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…์ถœ๋ ฅ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์ž ๋‹จ์œ„๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ž…์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

๐Ÿ’ก ์ž…์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž๋กœ ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๊ฑฐ๋‚˜ ํ™”๋ฉด์ด๋‚˜ ์Šคํ”ผ์ปค๋กœ ์ถœ๋ ฅํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ข…๋ฃŒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ํŒŒ์ผ ๊ด€๋ จ ์ž…์ถœ๋ ฅ

๐Ÿ’ก ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ด๋‹ค.
ํŒŒ์ผ์˜ ํฌ๊ธฐ๋‚˜ ์†์„ฑ, ์ด๋ฆ„ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ๋“ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

File file = new File("file path");
File file = new File("C:/data/childDir/grandChildDir/fileTest.txt");$
  • ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ ๋ฉ”์†Œ๋“œ
๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
booleancreateNewFile()์ƒˆ๋กœ์šด ํŒŒ์ผ ์ƒ์„ฑ
booleanmkdir()์ƒˆ๋กœ์šด ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
booleanmkdirs()๊ฒฝ๋กœ ์ƒ์— ์—†๋Š” ๋ชจ๋“  ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
booleandelete()ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œ
  • ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ ๋ฉ”์†Œ๋“œ
๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
booleancanExecute()์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์ธ์ง€ ์—ฌ๋ถ€
booleancanRead()์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์ธ์ง€ ์—ฌ๋ถ€
booleancanWrite()์ˆ˜์ • ๋ฐ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์ธ์ง€ ์—ฌ๋ถ€
StringgetName()ํŒŒ์ผ ์ด๋ฆ„ ๋ฆฌํ„ด
StringgetParent()๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ ๋ฆฌํ„ด
FilegetParentFile()๋ถ€๋ชจ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ File๊ฐ์ฒด๋กœ ์ƒ์„ฑ ํ›„ ๋ฆฌํ„ด
StringgetPath()์ „์ฒด ๊ฒฝ๋กœ ๋ฆฌํ„ด
booleanisDirectory()๋””๋ ‰ํ† ๋ฆฌ์ธ์ง€ ์—ฌ๋ถ€
booleanisFile()ํŒŒ์ผ์ธ์ง€ ์—ฌ๋ถ€
booleanisHidden()์ˆจ๊น€ ํŒŒ์ผ์ธ์ง€ ์—ฌ๋ถ€
longlastModified()๋งˆ์ง€๋ง‰ ์ˆ˜์ • ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋ฆฌํ„ด
longlength()ํŒŒ์ผ ํฌ๊ธฐ ๋ฆฌํ„ด

ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ด€๋ จ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜

  • ๋ฐ”์ดํŠธ ๋‹จ์œ„(์˜์–ด, ์ˆซ์ž, ํŠน์ˆ˜๊ธฐํ˜ธ ์‚ฌ์šฉ ์‹œ)
    • InputStream

    • OutputStream

  • ๋ฌธ์ž ๋‹จ์œ„(ํ•œ๊ธ€๊นŒ์ง€ ์‚ฌ์šฉ ์‹œ)
    • Reader

    • Writer

ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๊ด€๋ จ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜

๐Ÿ’ก ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
๋ณด์กฐ ์ŠคํŠธ๋ฆผ๋งŒ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋Œ€์ƒ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๊ณ  ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์— ์ถ”๊ฐ€๋กœ ์ ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜
    • ์ž…์ถœ๋ ฅ ์„ฑ๋Šฅ ํ–ฅ์ƒ

      • BufferedInputStream/BufferedOutputStream
      • ์ž…์ถœ๋ ฅ ์†๋„ ํ–ฅ์ƒ ๋ฐ ํ•œ ์ค„์”ฉ ์ถœ๋ ฅ ๋ฐ ์ž…๋ ฅ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ์ œ๊ณต ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
    • ํ˜•๋ณ€ํ™˜ ๋ณด์กฐ์ŠคํŠธ๋ฆผ

      • InputStreamReader/OutputStreamWriter
      • ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ๊ณ ๋ คํ•œ ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
    • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ

      • DataInputStream/DataOutputStream
    • ๊ธฐ๋ณธ์ž๋ฃŒํ˜• ๋ฐ ๋ฌธ์ž์—ด ๊ด€๋ จ ํƒ€์ž…์— ๋”ฐ๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

    • ๊ฐ์ฒด ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ

      • ObjectInputStream/ObjectOutputStream
      • ๊ฐ์ฒด ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์œ„ํ•œ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ
profile
์—”์ง€๋‹ˆ์–ด๋กœ์˜ ์„ฑ์žฅ์ผ์ง€

0๊ฐœ์˜ ๋Œ“๊ธ€