CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์ค‘์š”ํ•œ ์ƒˆ๋กœ์šด ์ฃผ์ œ์ธ ๋””์ž์ธ ํŒจํ„ด์„ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค . ์ด ํŒจํ„ด์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‹น์‹ ์ด " ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜์ง€ ๋ง๋ผ " ๋Š” ํ‘œํ˜„์„ ์•Œ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค . ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ์˜์—ญ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งŽ์€ ๊ณตํ†ต ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ด ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ ๊ฐ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋Š” ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์„ ๋””์ž์ธ ํŒจํ„ด์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต์‹ํ™”๋œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. "ํ”„๋กœ๊ทธ๋žจ์—์„œ X๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค." ๋งŽ์€ ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ˆ™์ง€ํ•ด์•ผ ํ•  ํ›Œ๋ฅญํ•œ ์ฑ…์ธ "Head First Design Patterns"๊ฐ€ ๊ทธ๋“ค์—๊ฒŒ ํ—Œ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด - 2์š”์ปจ๋Œ€ ํŒจํ„ด์€ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์™€ ์ผ์ข…์˜ ํ‘œ์ค€์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๋‹น ์†”๋ฃจ์…˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ˆ˜์—…์—์„œ๋Š” ๋‹ค์Œ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งŒ๋‚ฉ๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ. ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์‹ค์ƒํ™œ์—์„œ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์–ด๋Œ‘ํ„ฐ ์ค‘ ์ผ๋ถ€๋Š” ๋งŽ์€ ์ปดํ“จํ„ฐ์™€ ๋žฉํ†ฑ์— ์žˆ๋Š” ์นด๋“œ ํŒ๋…๊ธฐ์ž…๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด - 3์ผ์ข…์˜ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ปดํ“จํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์— USB ํฌํŠธ๊ฐ€ ์žˆ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์นด๋“œ๋ฅผ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‚ฌ์ง„, ๋น„๋””์˜ค ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์นด๋“œ ๋ฆฌ๋”๊ธฐ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, ๊ทธ๊ฒƒ์€ USB ์ผ€์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์นด๋“œ ์ž์ฒด์™€ ๋‹ฌ๋ฆฌ ์นด๋“œ ๋ฆฌ๋”๊ธฐ๋Š” ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์™€ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค์ธ USB๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ด…์‹œ๋‹ค:

public interface USB { 

   void connectWithUsbCable(); 
}
์ด๊ฒƒ์€ USB๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” USB ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

public class MemoryCard { 

   public void insert() { 
       System.out.println("Memory card successfully inserted!"); 
   } 

   public void copyData() { 
       System.out.println("The data has been copied to the computer!"); 
   } 
}
์ด๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. USB ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์นด๋“œ๋ฅผ USB ํฌํŠธ์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

public class CardReader implements USB { 

   private MemoryCard memoryCard; 

   public CardReader(MemoryCard memoryCard) { 
       this.memoryCard = memoryCard; 
   } 

   @Override 
   public void connectWithUsbCable() { 
       this.memoryCard.insert(); 
       this.memoryCard.copyData(); 
   } 
}
๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ๋ฌด์—‡์„CardReaderํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ด๋ฉฐ ์ •ํ™•ํžˆ ์–ด๋Œ‘ํ„ฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ชจ๋‘ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ ์‘๋˜๋Š” ํด๋ž˜์Šค(MemoryCard)๋Š” ์–ด๋Œ‘ํ„ฐ์˜ ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ƒํ™œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๋ฅผ ์นด๋“œ ๋ฆฌ๋”๊ธฐ์— ๋„ฃ์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๋„ ๊ทธ ์ผ๋ถ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ์™€ ๋‹ฌ๋ฆฌ ์–ด๋Œ‘ํ„ฐ๋Š” ์ปดํ“จํ„ฐ์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. USB ์ผ€์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, USB๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์žฅ์น˜์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ CardReader ํด๋ž˜์Šค๊ฐ€ USB ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ •ํ™•ํžˆ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ์š”? ์ •ํ™•ํžˆ ์šฐ๋ฆฌ๊ฐ€ ์ผ์–ด๋‚˜์•ผ ํ•  ์ผ์ž…๋‹ˆ๋‹ค! ์–ด๋Œ‘ํ„ฐ๋Š” ์ž‘์—…์„ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์–ด๋Œ‘ํ„ฐ ์ž์ฒด๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์นด๋“œ ๋ฆฌ๋”์—๋Š” ๋…๋ฆฝ์ ์ธ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ์—ญํ• ์€ ์นด๋“œ๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํ“จํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ํŒŒ์ผ ๋ณต์‚ฌ์ž…๋‹ˆ๋‹ค!connectWithUsbCable()๋ฐฉ๋ฒ•) ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ์˜ "์š”๊ตฌ ์‚ฌํ•ญ"์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์„ ์‹œ๋ฎฌ๋ ˆ์ดํŠธํ•  ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

public class Main { 

   public static void main(String[] args) { 

       USB cardReader = new CardReader(new MemoryCard()); 
       cardReader.connectWithUsbCable(); 
   } 
}
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ์–ป์—ˆ์Šต๋‹ˆ๊นŒ? ์ฝ˜์†” ์ถœ๋ ฅ:

Memory card successfully inserted! 
The data has been copied to the computer!
ํ›Œ๋ฅญํ•œ. ์šฐ๋ฆฌ๋Š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‹ค์Œ์€ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ๋Š” ๋น„๋””์˜ค ๋งํฌ์ž…๋‹ˆ๋‹ค.

Reader ๋ฐ Writer ์ถ”์ƒ ํด๋ž˜์Šค

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ํ™œ๋™์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค: ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์ž‘์—…์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค :) ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. Readerโ€ฏ์˜ค๋Š˜์€ ๋ฐ ํด๋ž˜์Šค ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค Writer. ์™œ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ทธ ์ˆ˜์—…? ์–ด๋Œ‘ํ„ฐ์— ๋Œ€ํ•œ ์ด์ „ ์„น์…˜๊ณผ ๊ด€๋ จ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํžˆ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹คโ€ฏ Reader. Reader์ถ”์ƒ ํด๋ž˜์Šค์ด๋ฏ€๋กœ ๊ฐ์ฒด๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. โ€ฏ ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์‹ค์ œ๋กœ ์ด๋ฏธ ๊ทธ๊ฒƒ์— ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค! ๊ฒฐ๊ตญ, ๋‹น์‹ ์€ ๊ทธ ์ž์†์ธ BufferedReader๋ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์ž˜ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :)InputStreamReader

public class BufferedReader extends Reader { 
โ€ฆ 
} 

public class InputStreamReader extends Reader { 
โ€ฆ 
}
ํด๋ž˜์Šค InputStreamReader๋Š” ํด๋ž˜์‹ ์–ด๋Œ‘ํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•˜์‹œ๊ฒ ์ง€๋งŒ InputStream๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ System.in๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

public static void main(String[] args) { 

   InputStreamReader inputStreamReader = new InputStreamReader(System.in); 
}
ํ•˜์ง€๋งŒ ๋ฌด์—‡ InputStreamReader์„ํ•ฉ๋‹ˆ๊นŒ?โ€ฏ๋ชจ๋“  ์–ด๋Œ‘ํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. โ€ฏ์ด ๊ฒฝ์šฐ InputStream์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค Reader. ์ฒ˜์Œ์—๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค InputStream. ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ฐœ๋ณ„ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Reader์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ์ด ๋Šฅ๋ ฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋Œ‘ํ„ฐ์— ์˜ํ•ด ํ•ด๊ฒฐ๋˜๋Š” ๊ณ ์ „์ ์ธ ๋ฌธ์ œ์ธ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ด์•ผ? Oracle ์„ค๋ช…์„œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค InputStream. ์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด - 4์ผ๋ จ์˜ ๋ฉ”์„œ๋“œ๋Š” ์ •ํ™•ํžˆ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ์ด ํด๋ž˜์Šค๋Š”read()๋ฐฉ๋ฒ•(์‹ค์ œ๋กœ ๋ช‡ ๊ฐ€์ง€ ๋ณ€ํ˜•)์ด์ง€๋งŒ ๋ฐ”์ดํŠธ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ๊ฐœ๋ณ„ ๋ฐ”์ดํŠธ ๋˜๋Š” ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐ”์ดํŠธ. ๊ทธ๋Ÿฌ๋‚˜์ด ์˜ต์…˜์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฌธ์ž๋ฅผ ์ฝ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค ์— ์ด๋ฏธ ๊ตฌํ˜„๋œReader ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค . ๋ฌธ์„œ์—์„œ๋„ ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด - 5๊ทธ๋Ÿฌ๋‚˜ InputStream๋ฐโ€ฏ Reader์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋ณด์‹œ๋‹ค์‹œํ”ผ read()๋ฉ”์„œ๋“œ์˜ ๋ชจ๋“  ๊ตฌํ˜„์—๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค InputStreamReader! ํด๋ž˜์Šค ๊ฐ„์˜ ์–ด๋Œ‘ํ„ฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค .์œ„์—์„œ ๊ณ ๋ คํ•œ ์นด๋“œ ํŒ๋…๊ธฐ์˜ ์˜ˆ์—์„œ์™€ ๊ฐ™์ด ์ ์‘๋˜๋Š” ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ด๋Œ‘ํ„ฐ ํด๋ž˜์Šค "๋‚ด๋ถ€"์— ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์•ž์˜ ์˜ˆ์—์„œ๋Š” MemoryCard๊ฐ์ฒด๋ฅผ ์•ˆ์— ๋„ฃ์Šต๋‹ˆ๋‹ค CardReader. InputStreamโ€ฏ์ด์ œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค InputStreamReader! ์ต์ˆ™ํ•œ System.in๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค InputStream.

public static void main(String[] args) { 

   InputStreamReader inputStreamReader = new InputStreamReader(System.in); 
}
๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด InputStreamReader์ ์‘์ด ์„ฑ๊ณตํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :) ์ด์ œ ๋ฌธ์ž๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ ๋””์ž์ธ ํŒจํ„ด - 6๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ์˜ System.in๊ฐœ์ฒด(ํ‚ค๋ณด๋“œ์— ๋ฐ”์ธ๋”ฉ๋œ ์ŠคํŠธ๋ฆผ)๊ฐ€ ์ฒ˜์Œ์—๋Š” ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์–ธ์–ด ์ž‘์„ฑ์ž๋Š” ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ I/O ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ถ”์ƒ Readerํด๋ž˜์Šค์—๋Š” ์Œ๋‘ฅ์ด ํ˜•์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹คโ€ฏ Writer. Readerโ€ฏ๊ทธ๊ฒƒ์€ ๋ฌธ์ž ์ž‘์—…์„ ์œ„ํ•œ ํŽธ๋ฆฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํฐ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹คโ€ฏ . ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ œ์™€ ์†”๋ฃจ์…˜์ด ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. OutputStream๋ฐ”์ดํŠธ๋งŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.Writer๋ฌธ์ž๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์œผ๋กœ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ โ€ฏ๋ฐโ€ฏ โ€ฏํด๋ž˜์Šค์˜ ๋‘ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„œ๋กœ OutputStreamWriter์‰ฝ๊ฒŒ ์ ์‘์‹œํ‚ต๋‹ˆ๋‹ค . ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•œ ํ›„ an์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ดํŠธ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! WriterOutputStreamOutputStreamOutputStreamWriter

import java.io.*; 

public class Main { 

   public static void main(String[] args) throws IOException { 

       OutputStreamWriter streamWriter = new OutputStreamWriter(new FileOutputStream("C:\\Users\\Username\\Desktop\\test.txt")); 
       streamWriter.write(32144); 
       streamWriter.close();
   } 
}
์ฝ”๋“œ 32144(็ถ)๋กœ ๋ฌธ์ž๋ฅผ ํŒŒ์ผ์— ์ž‘์„ฑํ•˜์—ฌ ๋ฐ”์ดํŠธ๋กœ ์ž‘์—…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค :) ์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ˆ˜์—…์—์„œ ๋งŒ๋‚˜์š”! :)
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION