๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.15] ํ‘œ์ค€์ž…์ถœ๋ ฅ, ์ง๋ ฌํ™”

by OR15A 2023. 11. 21.

ํ‘œ์ค€์ž…์ถœ๋ ฅ

  • ๊ธฐ๋ณธ์ž…์ถœ๋ ฅ(BIOS), ํ•ญ์ƒ READY
  • ์ฝ˜์†”์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ+ ์ฝ˜์†”๋กœ์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
  • ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ I/O๋ฅผ ์œ„ํ•œ ์ž…์ถœ๋ ฅ์ŠคํŠธ๋ฆผ

 

in / out / err
  • Systemํด๋ž˜์Šค์— ์„ ์–ธ๋œ ํด๋ž˜์Šค๋ณ€์ˆ˜(static๋ณ€์ˆ˜).
  • ์„ ์–ธ๋ถ€๋ถ„์—๋Š” InputStream, PrintStream์ด ์ ํ˜€์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” BufferedInputStream, BufferedOutputStream ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•จ.
  • ์ฝ˜์†” ์ž…๋ ฅ์€ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ๊ทธ๋ž˜์„œ Backspace ํ‚ค๋ฅผ ์ด์šฉํ•œ ํŽธ์ง‘์ด ๊ฐ€๋Šฅ.

 

ํ‘œ์ค€์ž…์ถœ๋ ฅ์˜ ๋Œ€์ƒ๋ณ€๊ฒฝ
  • setOut( ), setErr( ), setIn( )
  • ๋‹ค๋ฅธ ์ž…์ถœ๋ ฅ ๋Œ€์ƒ์œผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•จ.

 

RandomAccessFile
  • ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์˜๋ฏธ: ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ํŒŒ์ผ์„ ๋ฌด์ž‘์œ„(Random)์œผ๋กœ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ํŠน์„ฑ์„ ๋ฐ˜์˜ํ•œ ๊ฒƒ (+) Access : ์ ‘๊ทผ์ด๋ผ๋Š” ์˜๋ฏธ = ํŒŒ์ผ ๋‚ด์˜ ์ž„์˜์˜ ์œ„์น˜๋กœ ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค
  • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ž…์ถœ๋ ฅ ๋ชจ๋‘ ํ•  ์ˆ˜ ์žˆ์Œ.
  • I/O๋กœ๋ถ€ํ„ฐ ์ƒ์†X. DataInput,DataOutput ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด์„œ ์ฝ/์“ฐ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•จ.
  • ๊ธฐ๋ณธ์ž๋ฃŒํ˜• ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ฝ/์“ฐ ๊ฐ€๋Šฅ,
  • ์žฅ์ : ํŒŒ์ผ์˜ ์–ด๋Š ์œ„์น˜์—๋‚˜ ์ฝ/์“ฐ ๊ฐ€๋Šฅํ•จ.

 

File
  • ‘ํŒŒ์ผ’์€ ๊ธฐ๋ณธ์ ์ด๋ฉด์„œ๋„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž…์ถœ๋ ฅ ๋Œ€์ƒ.
  • ์ž๋ฐ”์—์„œ๋Š” Fileํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด์„œ ํŒŒ์ผ, ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ.
  • ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ(ํŒŒ์ผ ๊ฐ์ฒด๋งŒ๋“ ๋‹ค๊ณ  ํŒŒ์ผ ์ƒ์„ฑ์€ ์•„๋‹˜)
    • โ‘ File ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    • โ‘ก์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ/ CreatNewFile( )ํ˜ธ์ถœ
  • C:/๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋ชจ๋‘ ์ ˆ๋Œ€ ๊ฒฝ๋กœ

 

์ง๋ ฌํ™”
  • ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ.
  • ๊ฐ์ฒด: ํด๋ž˜์Šค์— ์ •์˜๋œ ์ธ์Šคํ„ด์Šค๋ณ€์ˆ˜์˜ ์ง‘ํ•ฉ (์‚ฌ์‹ค์€ ํด๋ž˜์Šค๋ณ€์ˆ˜X, ๋ฉ”์„œ๋“œX ์•ˆ๋“ค์–ด๊ฐ)
  • ObjectInputStream: ์—ญ์ง๋ ฌํ™”
  • ObjectOutputStream: ์ง๋ ฌํ™”
    • โ†ณ๋‘˜๋‹ค ๋ณด์กฐ์ŠคํŠธ๋ฆผ. ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ž…์ถ•๋ ฌํ•  ์ŠคํŠธ๋ฆผ์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•จ.
  • ์—ญ์ง๋ ฌํ™”์‹œ ๊ฐ์ฒด ์›๋ž˜ ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜ ํ•ด์ฃผ๊ธฐ.

 

์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ
  • ์ง๋ ฌํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ java.io.Serializable ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ํ•˜๊ธฐ(์•„๋ฌด๋Ÿฐ ๋‚ด์šฉ๋„ ์—†๋Š” ๋นˆ ์ธํ„ฐํŽ˜์ด์Šค. ๋‹จ์ง€ ์ง๋ ฌํ™”๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค์ž„์„ ๋‚˜ํƒ€๋ƒ„)
  • ์ง๋ ฌํ™”ํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค์—
    • Q.์กฐ์ƒ iv๋ฅผ ์ง๋ ฌํ™” ๋Œ€์ƒ์— ํฌํ•จํ•˜๊ณ  ์‹ถ์–ด
      • โ†ณโ‘ ์กฐ์ƒํด๋ž˜์Šค๊ฐ€ Serializable ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜
      • โ‘กwriteObject( ), readObject( )์ถ”๊ฐ€ํ•˜๊ธฐ
    • Q.์ง๋ ฌํ™”๊ฐ€ ์•ˆ๋˜๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ์žˆ์„ ๋•Œ
      • โ†ณ์ œ์–ด์ž transient๋ฅผ ๋ถ™์—ฌ์„œ ์ง๋ ฌํ™” ์ œ์™ธํ•˜๊ธฐ
    • Q.๋ณด์•ˆ์ƒ passward๊ฐ™์€ ์ง๋ ฌํ™” ์•ˆ๋˜๋Š” ๊ฐ’์€?
      • โ†ณtransient๋ถ™์ด๋ฉด ๊ทธ ํƒ€์ž… ๊ธฐ๋ณธ๊ฐ’ใ…‡๋กœ ์ดˆ๊ธฐํ™”๋จ.
  • ์ง๋ ฌํ™”ํ•  ๊ฐ์ฒด๊ฐ€ ๋งŽ์„ ๋•Œ๋Š” ์ปฌ๋ ‰์…˜์— ์ €์žฅํ•ด์„œ ์ง๋ ฌํ™” ํ•˜๋ฉด ์ข‹์Œ.

 

โ—† ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค์˜ ๋ฒ„์ „๊ด€๋ฆฌ

  • ์ง๋ ฌํ™”๋œ ๊ฐ์ฒด๋ฅผ ์—ญ์ง๋ ฌํ™” ํ•  ๋•Œ ์ง๋ ฌํ™” ํ–ˆ์„ ๋•Œ์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ.
    • โ†ณํด๋ž˜์Šค ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ๋‚ด์šฉ ๋ณ€๊ฒฝ ํ›„์—๋Š” ์—ญ์ง๋ ฌํ™” ์‹คํŒจํ•จ. ์—ญ์ง๋ ฌํ™”์‹œ ํด๋ž˜์Šค ๋ฒ„์ „์„ ๋น„๊ตํ•˜๊ฒŒ ๋•Œ๋ฌธ.
  • ํด๋ž˜์Šค ๋ฒ„์ „์„ ์ˆ˜๋™๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ. serialVersionUID ์ถ”๊ฐ€ํ•˜๊ธฐ.
  • serialver.exe๋Š” ํด๋ž˜์Šค์˜ serialVersionUID ์ž๋™์ƒ์„ฑ