[Java] java.io ํŒจํ‚ค์ง€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

2025. 5. 28. 17:15ยทโ˜•Java/๐Ÿ“Java Programming

โœ… 1. ์ŠคํŠธ๋ฆผ(Stream)์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ์ชฝ์—์„œ ๋‹ค๋ฅธ ์ชฝ์œผ๋กœ ์—ฐ์†์ ์œผ๋กœ ํ๋ฅด๋Š” ํ†ต๋กœ๋ฅผ ์˜๋ฏธํ•œ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์ถ”์ƒํ™”ํ•œ ๊ฐ์ฒด๊ฐ€ Stream์ž„.
  • ์‰ฝ๊ฒŒ๋งํ•ด, Stream์€ ์ˆ˜๋„๊ด€ ๋ฐ์ดํ„ฐ๋Š” ๊ทธ ์•ˆ์—์„œ ํ๋ฅด๋Š” ๋ฌผ๊ณผ ๊ฐ™์€ ๋А๋‚Œ์ด๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜๋„๊ผญ์ง€๋ฅผ ํ‹€๊ฑฐ๋‚˜ ์ž ๊ทธ๋Š” ์—ญํ• ์ž„.
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ†ต๋กœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ์ž๋ฐ”์—์„œ ๋ชจ๋“  IO ๊ธฐ๋ฐ˜ ํ†ต์‹ ์€ ์ŠคํŠธ๋ฆผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Œ. ( ๋„คํŠธ์›Œํฌ, HTTP, ํŒŒ์ผ, ์ฝ˜์†” ๋“ฑ )

โœ… 2. ์ŠคํŠธ๋ฆผ(Stream) ์ข…๋ฅ˜

  • ํฌ๊ฒŒ ๊ธฐ๋ณธ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ๊ณผ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.
  • ๊ธฐ๋ณธ, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ ๋‚ด๋ถ€์—์„œ๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ, ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋˜ ๋‚˜๋ˆ„์–ด์ง€๊ฒŒ ๋œ๋‹ค.

(1) ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ

  • Java I/O์—์„œ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์€ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ์ฆ‰, ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด๋จ.

[1] ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ

  • ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค: InputStream(์ž…๋ ฅ), OutputStream(์ถœ๋ ฅ)์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•จ.
  • ์ฒ˜๋ฆฌ ๋‹จ์œ„: 1๋ฐ”์ดํŠธ(8๋น„ํŠธ) ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋จ.
  • ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์ด๋ฏธ์ง€, ์˜ค๋””์˜ค, ๋น„๋””์˜ค, PDF, ์ด์ง„ ํŒŒ์ผ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ์„ ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ž„

[2] ๋ฌธ์ž ์ŠคํŠธ๋ฆผ

  • ๊ธฐ๋ฐ˜ ํด๋ž˜์Šค: Reader, Writer -> ๊ตฌํ˜„ํ•œ FileReader, FileWriter ๋“ฑ์ด์žˆ์Œ.
  • ์ฒ˜๋ฆฌ ๋‹จ์œ„: 2๋ฐ”์ดํŠธ(16๋น„ํŠธ, UTF-16 ๊ธฐ๋ฐ˜) 
  • ์‚ฌ์šฉ ์˜ˆ์‹œ: ํ…์ŠคํŠธ ํŒŒ์ผ, ๋ฌธ์„œ ๋“ฑ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

 

(2) ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

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

  • ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์€ ๋‚ด๋ถ€์— ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ ค์ค„ ์ˆ˜ ์žˆ์Œ.
  • ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์€ readLine(), writeInt() ๋“ฑ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณต์„ ํ•ด์คŒ.

โœ… 3. InputStream ํด๋ž˜์Šค ( ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ )

  • ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค ์ค‘ ์ตœ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค์ด๋‹ค.
  • ์ด๊ฒƒ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” xxxInputStream ์ž„.
  • ์‰ฝ๊ฒŒ๋งํ•ด, ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๋Š” ์—ญํ• ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ. ์ž…๋ ฅ

(1) abstract int read()

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ 1๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด ์ •์ˆ˜๋กœ ๋ฆฌํ„ด์„ ํ•˜๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ด๋‹ค.
  • InputStream ํด๋ž˜์Šค ๋‚ด๋ถ€์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, ๊ตฌํ˜„์ฒด๋“ค์€ ํ•ด๋‹น read() ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Œ.

(2) int read(byte[] b)

  • ํ•œ ๋ฐ”์ดํŠธ๊ฐ€ ์•„๋‹Œ, ์—ฌ๋Ÿฌ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์„œ byte ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ณ , ์ฝ์–ด ๋“ค์ธ ๋ฐ”์ดํŠธ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•จ.

(2) int read(byte[] b, int off, int len)

  • len ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด์„œ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์˜ off ์œ„์น˜๋ถ€ํ„ฐ ์ €์žฅํ•จ.

โœ… 4. OutputStream ํด๋ž˜์Šค ( ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ )

  • ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค ์ค‘ ์ตœ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค์ด๋‹ค.
  • ์ด๊ฒƒ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” xxxOutputStream
  • ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ 1๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด ์ •์ˆ˜๋กœ ๋ฆฌํ„ด์„ ํ•˜๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ด๋‹ค.
  • ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ตœ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค์ž„.
  • ํŒŒ์ผ, ๋„คํŠธ์›Œํฌ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ์™ธ๋ถ€๋กœ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํด๋ž˜์Šค์ž„.
  • ์‰ฝ๊ฒŒ๋งํ•ด, ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ ‘๊ทผํ•ด์„œ ํ…์ŠคํŠธ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ž„.

(1) abstract void write(int b)

  • ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ 1๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด ์ •์ˆ˜๋กœ ๋ฆฌํ„ด์„ ํ•˜๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ด๋‹ค.

(2) void write(byte[] b)

  • byteํ˜• ๋ฐฐ์—ด b์˜ ๋ชจ๋“  ๋ฐ”์ดํŠธ๋ฅผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์— ์”€

(3) void write(byte[] b, int off, int len)

  • byteํ˜• ๋ฐฐ์—ด b์˜ off ์œ„์น˜๋ถ€ํ„ฐ len ๋ฐ”์ดํŠธ๋ฅผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์— ์”€

(4) void close()

  • ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ณ  ์ž์›์„ ๋Œ๋ ค์คŒ

(5) void flush()

  • ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์— ๋‚จ์•„ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข… ๋ชฉ์ ์ง€๋กœ ๋ณด๋ƒ„
  • ๋ณดํ†ต์€ ์ถœ๋ ฅ์„ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฒ„ํผ์— ์ €์žฅ์„ ํ•˜๋Š”๋ฐ ๊ฑฐ๊ธฐ ๋‚ด๋ถ€์˜ ๋‚จ์•„ ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ณด๋‚ด์คŒ.

โœ… 5. Reader ํด๋ž˜์Šค

  • ์ž…๋ ฅ์šฉ ์บ๋ฆญํ„ฐ ๋‹จ์œ„ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค ์ค‘ ์ตœ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค
  • ์ด๊ฒƒ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” xxxReader
  • FileReader: ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉฐ, ํ•œ๊ธ€๋„ ์ž˜ ๋‚˜์˜ด ( 2๋ฐ”์ดํŠธ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ์Œ)
  • ๋ฐ˜๋ฉด, FileInputStream์€ 1๋ฐ”์ดํŠธ(0~255) ๋‹จ์œ„๋กœ ์ฝ์Œ.
  • ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋ฃฐ ๋• FileReader๊ฐ€ ์ ํ•ฉํ•จ.

(1) int read()

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ 1๊ฐœ ๋ฌธ์ž(2๋ฐ”์ดํŠธ)๋ฅผ ์ฝ์–ด ๋ฆฌํ„ดํ•จ

(2) int read(char[] cbuf)

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฌธ์ž๋“ค์„ ์ฝ์–ด char ํ˜• ๋ฐฐ์—ด cbuf์— ์ €์žฅํ•˜๊ณ , ์ฝ์–ด ๋“ค์ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•จ

(3) boolean ready()

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์—ˆ์œผ๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•จ

(4) abstract void close()

  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ณ  ์ž์›์„ ๋ฐ˜ํ™˜ํ•จ.

โœ… 6. Writer ํด๋ž˜์Šค

  • ์ถœ๋ ฅ์šฉ ์บ๋ฆญํ„ฐ ๋‹จ์œ„ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค ์ค‘ ์ตœ์ƒ์œ„ ์ถ”์ƒ ํด๋ž˜์Šค
  • ์ด๊ฒƒ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” xxxWriter
  • FileWriter: ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉฐ, ํ•œ๊ธ€๋„ ์ž˜ ๋‚˜์˜ด ( 2๋ฐ”์ดํŠธ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅ )
  • ๋ฐ˜๋ฉด, FileOutputStream์€ 1๋ฐ”์ดํŠธ(0~255) ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•จ. ( ์ฆ‰, ์“ฐ๊ธฐ ์ž‘์—…์„ ํ•จ )
  • ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋ฃฐ ๋• FileWriter๊ฐ€ ์ ํ•ฉํ•จ.

โœ… 7. ํŒŒ์ผ ์ž…์ถœ๋ ฅ

(1) File ํด๋ž˜์Šค

File file1 = new File("C:/example/test.txt");
File file2 = new File("C:/example", "test.txt");
File file3 = new File(new File("C:/example"), "test.txt");
  • ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋กœ, ์ƒ๋Œ€ ๋˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ(path)๋ฅผ ๊ฐ€์ง
  • java.io ํŒจํ‚ค์ง€์— ์†ํ•˜๋ฉฐ, ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”์ƒํ™”ํ•ด์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ํด๋ž˜์Šค์ด๋‹ค.
  • ์‹ค์ œ๋กœ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๊ธฐ๋Šฅ์€ ์—†์Œ. ์ฆ‰, ์ž…์ถœ๋ ฅ ๋ฉ”์†Œ๋“œ๋Š” ์ œ๊ณต๋˜์ง€ ์•Š์Œ.
  • ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฒฝ๋กœ, ์ด๋ฆ„, ์†์„ฑ, ์กด์žฌ ์—ฌ๋ถ€ ๋“ฑ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ์ด ๋จ.
  • ์šด์˜์ฒด์ œ์˜ ํŒŒ์ผ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์™€์„œ ์ฝ๋Š” ๊ฒƒ์ด๋ผ ๋ณ„๋„์˜ ์ŠคํŠธ๋ฆผ์„ ํ•„์š”ํ•˜์ง€ ์•Š์Œ.
  • ํ•ด๋‹น ํŒŒ์ผ ํด๋ž˜์Šค๋Š” ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์šด์˜์ฒด์ œ๋กœ ๋ถ€ํ„ฐ ๋ฐ›์•„์™€์„œ ์ œ๊ณต์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ž„.
  • ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์šด์˜์ฒด์ œ(OS)์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ,
    → Java์˜ File ํด๋ž˜์Šค๋งŒ์œผ๋กœ๋„ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋“œ๋””์Šคํฌ/SSD์— ์‹ค์ œ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ,
    → ์ด๊ฑธ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•ด์„  ์šด์˜์ฒด์ œ์˜ ์ €์ˆ˜์ค€ I/O ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ด ํ•„์š”


โœ… 8. RandomAccessFile ํด๋ž˜์Šค

  • RandomAccessFile์€ ํŒŒ์ผ์˜ ์–ด๋А ์œ„์น˜์—์„œ๋“  ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ์ž…์ถœ๋ ฅ ํด๋ž˜์Šค์ž„.
  • ์ผ๋ฐ˜์ ์ธ FileInputStream / FileOutputStream์€ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ๊ณ  ์”€
  • RandomAccessFile์€ **์ž„์˜ ์œ„์น˜(์˜คํ”„์…‹)**๋กœ ์ด๋™ํ•˜์—ฌ ํŒŒ์ผ์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ„.
  • ํŒŒ์ผ์˜ ์ž„์˜ ์œ„์น˜์—์„œ ์ฝ๊ธฐ ๋˜๋Š” ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ์ง€์›์„ ํ•ด์คŒ.
  • ํŒŒ์ผ์„ ์˜คํ”ˆํ•˜๊ณ , ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๊ณ , ์ฝ๊ธฐ ๋˜๋Š” ์“ฐ๊ธฐ๋ฅผ ํ•จ
  • ์ฝ๊ณ  ์“ฐ๋Š” ์œ„์น˜๋Š” ํŒŒ์ผ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ด
  • ํŒŒ์ผ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ„์น˜๋ถ€ํ„ฐ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ์Œ.
  • byte ๋‹จ์œ„๋กœ ์ฝ๊ณ  ์“ฐ๋ฉฐ, ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ ํŒŒ์ผ ํฌ์ธํ„ฐ๊ฐ€ ์ด๋™๋จ
  • ๋žœ๋ค ์—‘์„ธ์Šค ํŒŒ์ผ์„ ์ปค๋‹ค๋ž€ byte ๋ฐฐ์—ด๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ.

โœ… 9. FileInputStream & FileOutputStream ํด๋ž˜์Šค

  • ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์œ„ํ•œ ์ž…์ถœ๋ ฅ์šฉ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์ด๋‹ค.
  • ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ด๋ฏธ์ง€๋‚˜ ์˜ค๋””์˜ค ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ด์ง„ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•จ.
  • ์ฆ‰, txt ์ฒ˜๋Ÿผ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ๋ถ€์กฑํ•จ์ด ๋งŽ์Œ. ( ํ•œ๊ธ€์ด ์•ˆ๋œ๋‹ค๋˜๊ฐ€ ๊ทธ๋Ÿฐ๊ฑฐ )

โœ… 10. FileReader & FileWriter ํด๋ž˜์Šค

  • ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์ด๋ฉฐ, ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅ ํ•  ๋•Œ ์‚ฌ์šฉ์ด ๋จ.
  • ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋ฉฐ, ํ•œ๊ธ€๋„ ์ž˜ ๋‚˜์˜ด ( 2๋ฐ”์ดํŠธ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ์Œ)

โœ… 11. ์ฝ˜์†” ์ž…์ถœ๋ ฅ๊ณผ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

(1) Console ํด๋ž˜์Šค

  • ์ฝ˜์†” ์ž…์ถœ๋ ฅ์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.
  • ํ‚ค๋ณด๋“œ ์ž…๋ ฅ๊ณผ ํ™”๋ฉด ์ถœ๋ ฅ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ง€์›์„ ํ•จ.
  • ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์ฐฝ๊ณผ ๊ฐ™์€ ์ฝœ์†” ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ง€์›ํ•จ. ( ์ฆ‰, IDE์—์„œ๋Š” ์ง€์›์„ ์•ˆํ•˜๋Š” ๋“ฏ )
  • System.console()์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜์†” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ.

(2) ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

FileInputStream fis = new FileInputStream("text.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
  • ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์˜ ์„ฑ๋Šฅ์ด๋‚˜ ํŽธ์˜์„ฑ์„ ๋†’์ด๋Š” ๋ณด์กฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ด๋‹ค.
  • ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์ด ํ•„์ˆ˜์š”์†Œ์ด๊ณ , ํ•ด๋‹น ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ดํ›„ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ตฌ์กฐ์ž„.
  • ์ฆ‰, ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑ์ž ์ธ์ž๋กœ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด์ค˜์•ผํ•จ.

(3) ๋ณด์กฐ ์ŠคํŠธ๋ฆผ ์ข…๋ฅ˜

[1] ๋ฒ„ํผ๋ง ๊ธฐ๋Šฅ ์ œ๊ณต

  • BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

[2] Java์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ๊ทธ๋Œ€๋กœ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต

  • DataInputStream, DataOutputStream

[3] ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ํ˜•์‹์˜ ์ œ๊ณต

  • PrintStream, PrintWriter

[4] ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋ผ์ธ ๋‹จ์œ„๋กœ ์ฝ๊ฑฐ๋‚˜ ๋ผ์ธ ๋ฒˆํ˜ธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ œ๊ณต

  • LineNumberReader
  • BufferedReader์˜ ์„œ๋ธŒ ํด๋ž˜์Šค์ด๋‹ค.
  • ํ…์ŠคํŠธ ํŒŒ์ผ์„ ๋ผ์ธ ๋‹จ์œ„๋กœ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

[5] ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ๊ณผ ์บ๋ฆญํ„ฐ ์ŠคํŠธ๋ฆผ์˜ ํ˜ธํ™˜

  • InputStreamReader, OutputStreamWriter
  • ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ฝํžˆ๋Š” ์ŠคํŠธ๋ฆผ์„ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ.
  • ํŠน์ • ๋ฌธ์ž์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ƒ์„ฑ์ž๋Š” InputStreamReader(InputStream in, Charset cs)
  • ์ฆ‰, new InputStreamReader(System.in, "euc-kr"); ํ˜•์‹์œผ๋กœ ๋งŒ๋“ฌ String ๋˜๋Š” Charset ์œผ๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Œ.
  • ์ด๋ ‡๊ฒŒํ•˜๋ฉด, read() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Œ. ์ฆ‰, 1๋ฐ”์ดํŠธ๋กœ ์ฝ๊ณ  ์ธ์ฝ”๋”ฉํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์ž„.
  • ์ฆ‰, 1๋ฐ”์ดํŠธ์”ฉ ์ฝ๊ณ  → ์ง€์ •ํ•œ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์œผ๋กœ ํ•ด์„ํ•ด์„œ → ๋ฌธ์ž(char)๋กœ ๋ณ€ํ™˜ํ•ด์คŒ.

'โ˜•Java > ๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ •๋ฆฌ: List, Set, Map ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋Œ€ํ‘œ ๊ตฌํ˜„์ฒด ์ด์ •๋ฆฌ  (0) 2025.05.30
[Java] java.nio ์‚ฌ์šฉ๋ฒ• | Path, Files, FileChannel ์˜ˆ์ œ ๋ชจ์Œ  (3) 2025.05.30
[Java] java.lang ํŒจํ‚ค์ง€ ์ •๋ฆฌ: Object, String, Math ํด๋ž˜์Šค ์ด์ •๋ฆฌ  (0) 2025.05.26
[Java] ์ž๋ฐ” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋žŒ๋‹ค์‹(Lambda Expression) ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ  (1) 2025.05.23
[Java] ์ œ๋„ค๋ฆญ(Generic) ๋ฌธ๋ฒ• ์ •๋ฆฌ: ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ์ œํ•œ๊นŒ์ง€  (0) 2025.05.23
'โ˜•Java/๐Ÿ“Java Programming' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ •๋ฆฌ: List, Set, Map ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋Œ€ํ‘œ ๊ตฌํ˜„์ฒด ์ด์ •๋ฆฌ
  • [Java] java.nio ์‚ฌ์šฉ๋ฒ• | Path, Files, FileChannel ์˜ˆ์ œ ๋ชจ์Œ
  • [Java] java.lang ํŒจํ‚ค์ง€ ์ •๋ฆฌ: Object, String, Math ํด๋ž˜์Šค ์ด์ •๋ฆฌ
  • [Java] ์ž๋ฐ” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋žŒ๋‹ค์‹(Lambda Expression) ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๊ธฐ
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (150)
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (25)
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (10)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ“šComputer Science (0)
      • ๐Ÿ› ๏ธBackend (2)
      • โ˜•Java (20)
        • ๐Ÿ“Java Programming (19)
        • ๐ŸงฉJava Design Pattern (1)
      • ๐ŸŒณSpring (9)
        • ๐ŸŒฑSpring Framework (6)
        • ๐ŸŒฑSpring Security (1)
      • โšกPython (13)
      • ๐Ÿ›ข๏ธDatabase (0)
      • ๐ŸŒฟGitHub (1)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์žก๋‹ด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
    ์œ ๋น„์ฟผํ„ฐ์Šค
    Python
    ํŒŒ์ด์ฌ
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ํด๋ผ์šฐ๋“œ
    ์„ธ๊ณ„ํ™”
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ๋ฐฉ์†ก๋Œ€
    ์ž๋ฐ”
    ์Šคํ”„๋ง
    ๋‹คํ˜•์„ฑ
    Spring Framework
    ์ž…์ถœ๋ ฅ
    Java
    spring
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ์ปดํŒŒ์ผ๋Ÿฌ
    ๋ฐฉํ†ต๋Œ€
    ํด๋ž˜์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] java.io ํŒจํ‚ค์ง€ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”