Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java - ์ž๋ฐ”์˜ ์‹ ] 26์žฅ. ํŒŒ์ผ I/O ๊ธฐ์ดˆ (Fileํด๋ž˜์Šค) ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ”

[Java - ์ž๋ฐ”์˜ ์‹ ] 26์žฅ. ํŒŒ์ผ I/O ๊ธฐ์ดˆ (Fileํด๋ž˜์Šค)

๋น„๋น„ bibi 2021. 2. 7. 00:32

์ž๋ฐ”์˜ ์‹  26์žฅ

ํŒŒ์ผ I/O

I/O๋ž€?

  • I๋Š” input, O๋Š” output์˜ ์•ฝ์ž. ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ํ†ต์นญํ•จ.

  • ์šฉ๋„

    • ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ(์“ธ ๋•Œ)
    • ๋‹ค๋ฅธ ์„œ๋ฒ„/๋””๋ฐ”์ด์Šค๋กœ ํŒŒ์ผ์„ ๋ณด๋‚ผ ๋•Œ
  • JVM๊ธฐ์ค€์œผ๋กœ input๊ณผ output์„ ์ƒ๊ฐํ•˜๋ฉด ๋จ.

    • ์ฝ์„ ๋•Œ๋Š” input
    • ํŒŒ์ผ๋กœ ์“ฐ๊ฑฐ๋‚˜ ์™ธ๋ถ€๋กœ ์ „์†กํ•  ๋•Œ๋Š” output

java.ioํŒจํ‚ค์ง€์™€ ์ŠคํŠธ๋ฆผ

๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค ์ œ๊ณต.

*์ž๋ฐ”์—์„œ ์ŠคํŠธ๋ฆผ์ด๋ž€ ''๋Š๊ธฐ์ง€ ์•Š๊ณ  ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ''๋ฅผ ๋งํ•จ

  • InputStream,OutputStream

Reader, Writer ํด๋ž˜์Šค

char๊ธฐ๋ฐ˜์˜ ๋ฌธ์ž์—ด ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค.

File ํด๋ž˜์Šค (java.io.File)์™€ Files ํด๋ž˜์Šค(java.nio.File.Files)

  • Fileํด๋ž˜์Šค๋Š” ํŒŒ์ผ๊ณผ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ (file, path)๋ฅผ ํฌํ•จํ•จ
  • Filesํด๋ž˜์Šค๋Š” Fileํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ ์ œ๊ณตํ•จ
    ๋ชจ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ static์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Œ

File ํด๋ž˜์Šค

ํŒŒ์ผ ๋ฐ ๊ฒฝ๋กœ ์ •๋ณด๋ฅผ ํ†ต์ œํ•˜๋Š” ํด๋ž˜์Šค

๋ณดํ†ต ์œˆ๋„์šฐ์—์„œ๋Š” ๊ฒฝ๋กœ๋ฅผ C:\User์ฒ˜๋Ÿผ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜์ง€๋งŒ,
์ž๋ฐ”์—์„œ ๊ฒฝ๋กœ๋ฅผ ํ‘œ๊ธฐํ•  ๋•Œ๋Š” \๋ฅผ ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด escape character๋กœ ์ธ์‹ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ญ์Šฌ๋ž˜์‹œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ \\์ฒ˜๋Ÿผ ๋‘ ๋ฒˆ ์—ฐ๋‹ฌ์•„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ƒ์„ฑ์ž

  • File(String pathname) : pathname์˜ ๊ฒฝ๋กœ ์ด๋ฆ„์œผ๋กœ File๊ฐ์ฒด ์ƒ์„ฑ
  • File(String parent, String child) : parent(์ƒ์œ„ ๊ฒฝ๋กœ)์™€ child(ํ•˜์œ„ ๊ฒฝ๋กœ)๋กœ File๊ฐ์ฒด ์ƒ์„ฑ

๋ฉ”์†Œ๋“œ

File.separator : ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ๋ถ„๊ธฐํ˜ธ

exist() : File๊ฐ์ฒด์˜ ํ•ด๋‹น ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ. ์กด์žฌํ•˜๋ฉดtrue

mkdir() : File๊ฐ์ฒด ๊ฒฝ๋กœ์— ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ์— ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑ

mkdirs() : mkdir()์™€ ๋น„์Šทํ•˜๋‚˜, ๊ฒฝ๋กœ์ƒ์˜ ์—ฌ๋Ÿฌ ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑ

isDirectory() : File๊ฐ์ฒด๊ฐ€ ๊ฒฝ๋กœ(๋””๋ ‰ํ† ๋ฆฌ)์ธ์ง€ ํ™•์ธ

isFile() : File๊ฐ์ฒด๊ฐ€ ํŒŒ์ผ์ธ์ง€ ํ™•์ธ

isHidden() : File๊ฐ์ฒด๊ฐ€ ์ˆจ๊น€ํŒŒ์ผ์ธ์ง€ ํ™•์ธ

canRead() : ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ์ž๋ฐ”ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด๋‹น File๊ฐ์ฒด์— ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ

canWrite() : ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ

canExecute() : ์‹คํ–‰ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ

lastModified() : ํŒŒ์ผ/๊ฒฝ๋กœ๊ฐ€ ์–ธ์ œ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ - Dateํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

delete() : ํŒŒ์ผ์„ ์‚ญ์ œํ•จ

createNewFile() : File ๊ฒฝ๋กœ์— ๋น„์–ด ์žˆ๋Š” ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ (IOException ๋ฐœ์ƒ ๊ฐ€๋Šฅ)

getAbsolutePath(), getCanonicalPath() : File๊ฐ์ฒด์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ String์œผ๋กœ ๋ฆฌํ„ด

getAbsoluteFile(), getAbsolutePath() : File ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด

getName() : ํŒŒ์ผ์€ ํŒŒ์ผ๋ช…์„, ๊ฒฝ๋กœ๋Š” ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ String์œผ๋กœ ๋ฆฌํ„ด

getPath() : ์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ๋ฆฌํ„ด

getParent() : (File๊ฐ์ฒด๊ฐ€ ํŒŒ์ผ์ผ ๊ฒฝ์šฐ) ํŒŒ์ผ ์ด๋ฆ„์„ ์ œ์™ธํ•œ ๊ฒฝ๋กœ๋งŒ์„ ๋ฆฌํ„ด