๊ด€๋ฆฌ ๋ฉ”๋‰ด

gi_dor

Java I / O ๋ณธ๋ฌธ

Language/Java

Java I / O

๊ธฐ๋Œ 2023. 11. 23. 12:17


 

๐Ÿ”ธ I / O - Java์˜ ์ž…๋ ฅ , ์ถœ๋ ฅ

  • Input ์ž…๋ ฅ , Output ์ถœ๋ ฅ
  • java.io ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํด๋ž˜์Šค
InputStream /  Reader = ์ฝ๊ธฐ

OutputStream /  Writer = ์“ฐ๊ธฐ

 

โ—ป 1byte ์”ฉ ์ฝ๊ณ  ์“ด๋‹ค : InputStream  /  OutputStream ( ํ…์ŠคํŠธ , ์‚ฌ์ง„ , ์˜์ƒ , ์••์ถ•ํŒŒ์ผ )

โ—ป 1 ๊ธ€์ž์”ฉ ์ฝ๊ณ  ์“ด๋‹ค : Reader / Writer ( ํ…์ŠคํŠธ ๋งŒ )

 

๐Ÿ”น ์ŠคํŠธ๋ฆผ ( = ํŒŒ์ดํ”„ )

  • ์–ด๋Š ํ•œ์ชฝ์—์„œ ๋‹ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด  ๋‘ ๋Œ€์ƒ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ด  ํ•„์š”ํ•˜๋‹ค
  • ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์šด๋ฐ˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ๊ฒฐํ†ต๋กœ
  • ์ŠคํŠธ๋ฆผ์€ '๋‹จํ–ฅํ†ต์‹ ' ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ์— ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌ ํ• ์ˆ˜ ์—†๋‹ค  ( โ‡„ ๋ถˆ๊ฐ€ )
  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ , ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ 2๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์ด ํ•„์š”ํ•˜๋‹ค
  • Queue ์™€ ๊ฐ™์€ FIFO ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค.

๐Ÿ“Œ ์ŠคํŠธ๋ฆผ์—๋Š” ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐํŒจํ„ด , ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ŠคํŠธ๋ฆผ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค
โœ” ์„ฑ๋Šฅ์ด ๋” ์ข‹์•„์ง„๋‹ค๊ณ  ํ•œ๋‹ค

 

๐Ÿ”น ByteStream

  • ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด๋กœ ํ•œ๋ฒˆ์— 1 byte ์”ฉ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ์ŠคํŠธ๋ฆผ
  • InputStream ๊ณผ OutputStream์ด ์žˆ๋‹ค

 

๐Ÿ”น InputStream ํด๋ž˜์Šค

  • ์Šคํฌ๋ฆผ๊ฐ์ฒด๋กœ 1byte์”ฉ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ

 

โ—ป ๋ฉ”์„œ๋“œ

int read() 
// 1. ํ•œ ๋ฐ”์ดํŠธ์”ฉ ์ฝ์–ด์„œ ๋ฐ˜ํ™˜
// 2. ์ŠคํŠธ๋ฆผ์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด -1 ๋ฐ˜ํ™˜

int read(byte[] buf)
// 1. ์ง€์ •๋œ byte[] ๋ฐฐ์—ด์— ํ•œ ๋ฐ”์ดํŠธ์”ฉ ์ €์žฅ , ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์€ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜
// 2. ์ŠคํŠธ๋ฆผ์˜ ๋์— ๋„๋‹ฌ์‹œ -1 ๋ฐ˜ํ™˜

void close()
// ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ–ˆ๋˜ ์‹œ์Šคํ…œ์˜ ์ž…์ถœ๋ ฅ ์ž์›์„ ๋ฐ˜ํ™˜

 

โ—ป ํด๋ž˜์Šค

InputStream	
    FileInputStream - ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ 1byte์”ฉ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ
    BufferedInputStream - ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ์ฝ๊ธฐ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ŠคํŠธ๋ฆผ
    DataInputStream	- ์ŠคํŠธ๋ฆผ์„ ์ฝ์–ด์„œ ๊ฐ’์„๊ทธ๋Œ€๋กœ ๋ณต์›ํ•œ๋‹ค
    ObjectInputStream
    
OutputStream
    FileOutputStream	- ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ํŒŒ์ผ์— 1byte์”ฉ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ์ŠคํŠธ๋ฆผ
    BufferedOutputStream - ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ŠคํŠธ๋ฆผ
    DataOutputStream	- ๊ฐ’์„ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ
    ObjectOutputStream
    printStream	- ์“ฐ๊ธฐ ์ „์šฉ ์ŠคํŠธ๋ฆผ , ํ‘œ์ค€์ถœ๋ ฅ / ํ‘œ์ค€ ์—๋Ÿฌ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์ด๋‹ค
 
 Reader 
    FileReader	- ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ํŒŒ์ผ์€ ๋‚ด์šฉ์„ 1๊ธ€์ž์”ฉ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ
    BufferedReader	- ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ์ฝ๊ธฐ์„ฑ๋Š˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ŠคํŠธ๋ฆผ
    				 ํ…์ŠคํŠธ๋ฅผ ํ•œ ์ค„์”ฉ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ
                     ํ…์ŠคํŠธ ์ฝ๊ธฐ์— ์ตœ์ ํ™”๋˜์–ด์žˆ๋Š” ์ŠคํŠธ๋ฆผ
    InputStreamReader	- InputStream๊ณผ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•œ Reader ๊ฐ์ฒด

Writer
	FileWriter	- ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ 1๊ธ€์ž์”ฉ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ์ŠคํŠธ๋ฆผ
    BufferedWriter	- ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ŠคํŠธ๋ฆผ
    OutputStreamWriter - OutputStream๊ฐ€ ์—ฐ๊ฒฐํ•˜๋Š”  
    PrintWriter	- ์“ฐ๊ธฐ ์ „์šฉ ์ŠคํŠธ๋ฆผ , ํ…์ŠคํŠธ๊ธฐ๋ก์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋Š” ์ŠคํŠธ๋ฆผ
    				ํ•œ์ค„์”ฉ ์ถœ๋ ฅํ•˜๋Š” println() ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
                    ์ž๋™ flush ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค


๐Ÿ”น  ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅํ•œ ๋‚ด์šฉ ํ•œ์ค„์”ฉ ์ฝ์–ด์˜ค๊ธฐ

class System {
static InputStream in;	// ํ‘œ์ค€ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ: 1byte์”ฉ ์ฝ๋Š”๋‹ค
static OutputStream out;	// ํ‘œ์ค€ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ : println() ๋ฉ”์„œ๋“œ๋กœ ์—ฌ๋Ÿฌ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ
static PrintStream err;	// ํ‘œ์ค€ ์—๋Ÿฌ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ : println() ๋ฉ”์„œ๋“œ๋กœ ์—ฌ๋Ÿฌ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ
}
    public static void main(String[] args) throws Exception {

        // ํ‚ค๋ณด๋“œ๋กœ ์ž…๋ ฅ์„ ํ•œ์ค„์”ฉ ์ž…๋ ฅํ•˜๊ธฐ
        // Application -> BufferedReader -> InputStreamReader -> InputStream

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("### ์ž…๋ ฅ : ");
        String text = reader.readLine();
        System.out.println("์ž…๋ ฅ ๋‚ด์šฉ : " + text);

    }


๐Ÿ”น InputStream ์‹ค์Šต

// ํ•ด๋‹น ํŒŒ์ผ์—์„œ 1 byte '๋งŒ' ์ฝ๊ธฐ

// 1.์ƒ์„ฑ์ž์— ํŒŒ์ผ๊ฒฝ๋กœ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌ 
// 2. ํ•ด๋‹น ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐ๊ดธ InputStream ์ƒ์„ฑ๋จ
  InputStream in = new FileInputStream("c:/files/sample.dat");
  
  int oneByteData = in.read();
// read() a๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•˜๊ฒŒ๋˜๋ฉด ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ถ€ํ„ฐ 1๋ฐ”์ดํŠธ๋ฅผ ์ฝ์–ด์˜ด
// oneByteData์—๋Š” read() ๋ฉ”์„œ๋“œ๊ฐ€ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  
1byte = ์˜์–ด 1๊ธ€์ž 
Ex.  ABC  -> 3byte   Wa  -> 2byte
 // ์ŠคํŠธ๋ฆผ์˜ ๋๊นŒ์ง€ ์ฝ์–ด ํŒŒ์ผ๋‚ด์šฉ ๋ชจ๋‘ ์ฝ๊ธฐ
 
  InputStream in = new FileInputStream(new File("c:/files", "sample.dat"));
  // ์ƒ์„ฑ์ž์— ํŒŒ์ผ๊ฒฝ๋กœ ๋ฌธ์ž์—ด๋กœ ์ž…๋ ฅํ•˜๊ณ  ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐ๋œ inputStream ์ƒ์„ฑ
  
  int oneByteData = 0;

  while ((oneByteData = in.read()) != -1) {
    // oneByteData์—๋Š” ํ•œ ๋ฐ”์ดํŠธ์‹ ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค
    // ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ
  }
  

// int read() : 1byte์”ฉ ์ฝ์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ŠคํŠธ๋ฆผ์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// while ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ -1์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ณ„์† ํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰๋จ
// ์ŠคํŠธ๋ฆผ์˜ ๋๊นŒ์ง€ ๋„๋‹ฌํ•˜๋ฉด -1 ์ด ๋˜๋ฉด์„œ while ์กฐ๊ฑด ์ข…๋ฃŒ๋จ
// ์ŠคํŠธ๋ฆผ์˜ ๋๊นŒ์ง€ ์ฝ๊ธฐ
  InputStream in = new FileInputStream(new File("c:/files/sample.dat"));
  
  // bytes ๋ฐฐ์—ด์€ read(Byte[] buf) ๋ฉ”์„œ๋“œ๊ฐ€ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ ๋ฒˆ์— ์ฝ์–ด์˜ฌ byte๋ฐ์ดํ„ฐ๋ฅผ 
  // ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด.
  
  byte[] bytes = new byte[1024];
  

  
  // byte๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 1024๋ผ๋ฉด len์˜ ๊ฐ’์€ 0 ~ 1014 ๋ฒ”์œ„์˜ ๊ฐ’์ด๋‹ค. 
  int len = 0; // read(byte[] buf) ๋ฉ”์„œ๋“œ๊ฐ€ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ๋ฒˆ์— ์ฝ์–ด์„œ byate๋ฐฐ์—ด์— ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.
  while ((len = in.read(bytes)) != -1) {
     // bytes๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ
  }
  
//  read(Byte[] buf) ๋ฉ”์„œ๋“œ๋Š” ํ•œ๋ฒˆ์—ฌ ์—ฌ๋Ÿฌ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ์Œ
// ์ฝ์€ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ ์ŠคํŠธ๋ฆผ ๋์— ๋„๋‹ฌ์‹œ -1 ๋ฐ˜ํ™˜
// ํ•œ๋ฒˆ์— ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ฝ์„ ๋•Œ ํšจ์œจ

// ์ด ์ฝ”๋“œ๋Š” inputSteam์„ ๋‹ซ์•„์•ผ ํ•œ๋‹ค๊ณ ํ•จ in.close();
// ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž์›์˜ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ ํ•จ

 

๐Ÿ”นBufferInputStream ์‹ค์Šต

  // BufferedInputStream์€ ๋‹ค๋ฅธ InputStream๊ณผ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  BufferedInputStream in = new BufferedInputStream(new FileInputStream("c:/files/sample.dat"));
  
  // 1. FileInputStra์œผ๋กœ ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐ๋œ InputStream ์ƒ์„ฑ
  // 2. ๊ทธ๊ฑธ ๋‹ค์‹œ BufferedInputStream ์ƒ์„ฑ์ œ์•„ ์ „๋‹ฌํ•ด์„œ BufferedInputStrea ์ƒ์„ฑ
  
  
  
  // ์ŠคํŠธ๋ฆผ์˜ ๋๊ฐ€์ง€ ์ฝ๊ธฐ
  int data = 0;
  while ((data = in.read()) != -1) {
    // data์˜ ๊ฐ’ ์ฒ˜๋ฆฌํ•˜๊ธฐ
  }
  
  in.close();
  
  // ๋˜‘๊ฐ™์Œ read() ๋ฉ”์„œ๋“œ ๋Š” ์ŠคํŠธ๋ฆผ ๋์—๊ฐ€๋ฉด -1 ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ
  //  -1 ์ „๊นŒ์ง€ ๊ณ„์™ ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ ค์„œ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ด
  
  // in.close(); ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ง‰๊ธฐ
  • BufferedInputStream์€ InputStream์˜ ํ•˜์œ„ ํด๋ž˜์Šค
  • ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…์ถœ๋ ฅ์˜ ํšจ์œจ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค

โ“    ์‹œ์ž‘๋ถ€ํ„ฐ ๊ทธ๋ƒฅ BufferedInputStream์œผ๋กœ ํ•˜๋ฉด์•ˆ๋˜๋‚˜ ?


โ–ถ BufferedInputStream์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ ๋‚ด๋ถ€๋ฒ„ํผ์— 
๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ฝ์€ ํ›„ ์ด ๋ฒ„ํผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ ํ• ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค..

 

 /*
        BufferedReader
            ` ๋‹ค๋ฅธ Reader์™€ ์—ฐ๊ฒฐํ•ด์„œ ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ŠคํŠธ๋ฆผ
            ` ์ŠคํŠธ๋ฆผ์˜ ๋์„๋งŒ๋‚˜๋ฉด null ๋ฐ˜ํ™˜
            ` ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ ์ค„ ๋ฐ”๊ฟˆ ๋ฌธ์ž๋กœ ๋ฐ”๋กœ ์•ž๊นŒ์ง€ ์ฝ์–ด์˜จ๋‹ค
         */
         
public static void main(String[] args) throws Exception {

	String path = "C:/Users/Han/IdeaProjects/HTA/Java/io/io3/data.csv";

    BufferedReader reader = new BufferedReader(new FileReader(path));
    // BufferedReader์˜ readLine() ๋ฉ”์„œ๋“œ๋กœ ์ฝ์–ด์˜จ ํ…์ŠคํŠธ๋ฅผ ๋Œ€์ž…ํ•  ๋ณ€์ˆ˜
    String text = null;

// (text = reader.readLin() ) != null )์€
// reader.readLine() ์ฝ์–ด์˜จ ํ…์ŠคํŠธ๋ฅผ text ๋ณ€์ˆ˜์— ๋Œ€์ž…
// text ๋ณ€์ˆ˜์— ๋Œ€์ž…๋œ ๋ฌธ์ž์—ด์ด null ์ด ์•„๋‹ˆ๋ผ๋ฉด while๋ฌธ์˜ ๋ธ”๋Ÿญ๋‚ด์— ์ˆ˜ํ–‰๋ฌธ์„ ์ˆ˜ํ–‰
	while ((text = reader.readLine()) != null) {

// ์ฝ์–ด์˜จ ๋ฌธ์ž์—ด์„ ๋ถ„์„ํ•ด์„œ ํ‰๊ท ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ์ˆ˜ํ–‰๋ฌธ

// text์— ๋Œ€์ž…๋œ ๋ฌธ์ž์—ด์€ "๊น€์œ ์‹ ,100,89,79"๊ณผ ๊ฐ™์€ํ˜•ํƒœ
// ","๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ์„œ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
	String[] items = text.split(",");
// ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ ์กฐํšŒํ•˜๊ณ  , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐ’์„ ๋ณ€ํ™˜ํ•œ๋‹ค.
	String name = items[0];

    int kor = Integer.parseInt(items[1]);
    int eng = Integer.parseInt(items[2]);
    int math = Integer.parseInt(items[3]);

    int total = kor + eng + math;
    int average = total / 3;

    System.out.println("์ด๋ฆ„ : " + name);
    System.out.println("ํ‰๊ท  : " + average);
    System.out.println();

    //            System.out.println(text);
   	 }

    reader.close();


}

 


 

728x90

'Language > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Java enum  (1) 2023.12.01
Java ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ  (1) 2023.11.29
Java Exception  (4) 2023.11.22
Java ์ œ๋„ค๋ฆญ, ์ปฌ๋ ‰์…˜ , Set , List , Map , Stack  (1) 2023.11.20
Java Iterator , Score CRUD  (1) 2023.11.17