๐Ÿ’ป Language/Java : ์ž๋ฐ”

[Java] ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ Java ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

mxnxeonx 2024. 11. 15. 19:25
728x90
728x90

์ž…์ถœ๋ ฅ ํ•จ์ˆ˜

  • Java์˜ ์ž…์ถœ๋ ฅ(IO; Input/Output) ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค๋Š” Java์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ java.io์™€ java.nio ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
  • ์ž…์ถœ๋ ฅ์€ ํฌ๊ฒŒ ์ฝ˜์†” ์ž…์ถœ๋ ฅ, ํŒŒ์ผ ์ž…์ถœ๋ ฅ, ๋„คํŠธ์›Œํฌ ์ž…์ถœ๋ ฅ์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
    • ์ผ๋ฐ˜์ ์œผ๋กœ System.out.println(""), Scanner๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ์‹œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๋‹จ์ ์ด ๋ฐœ์ƒํ•˜์—ฌ, ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ๋‘๊ณ  ์ƒํ™ฉ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•œ๋‹ค.

 

1) Scanner

[ ์žฅ์  ]

  • java.util.Scanner ํด๋ž˜์Šค : ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ฝ˜์†” ์ž…์ถœ๋ ฅ ํด๋ž˜์Šค๋กœ, ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ
  • nextInt, nextDouble, nextLine ๋“ฑ ๋‹ค์–‘ํ•œ ์ž…๋ ฅ ํƒ€์ž…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ์ž…๋ ฅ์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ธ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ง€์›

[ ๋‹จ์  ]

  • ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์‹œ ์†๋„๊ฐ€ ๋А๋ฆผ : next(), nextLine() ๋“ฑ์„ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€์ ์œผ๋กœ ํŒŒ์‹ฑ ์ž‘์—…์ด ์ˆ˜ํ–‰๋จ
  • nextInt()์™€ nextLine() ํ˜ผ์šฉ์‹œ ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๊ฐ€ ๋‚จ์•„ ์ถ”๊ฐ€ ์ž…๋ ฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

[ ์ฝ”๋“œ ]

  • Scanner scanner = new Scanner(System.in); → Scanner ๊ฐ์ฒด ์„ ์–ธ
  • String name = scanner.nextLine();  name ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด ์ž…๋ ฅ
  • int age = scanner.nextInt();  age ๋ณ€์ˆ˜์— ์ •์ˆ˜ ์ž…๋ ฅ
  • scanner.close();  ์ž…๋ ฅ ์ข…๋ฃŒ
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter your name: ");
        String name = scanner.nextLine();  // ๋ฌธ์ž์—ด ์ž…๋ ฅ

        System.out.print("Enter your age: ");
        int age = scanner.nextInt();  // ์ •์ˆ˜ ์ž…๋ ฅ

        System.out.println("Hello, " + name + ". You are " + age + " years old.");
        scanner.close();  // ์‚ฌ์šฉ ํ›„ ๋‹ซ์•„์ค๋‹ˆ๋‹ค.
    }
}

 

2) BufferedReader (+InputStreamReader)

[ ์žฅ์  ]

  • ๋Œ€๋Ÿ‰ ์ž…๋ ฅ์‹œ Scanner๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ์†๋„
  • ๋‚ด๋ถ€ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…์ถœ๋ ฅ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ 
  • ๋Œ€๋Ÿ‰ ์ž…๋ ฅ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ ํ•ฉ

[ ๋‹จ์  ]

  • ๋ชจ๋“  ์ž…๋ ฅ์ด ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ์ง์ ‘ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด์•ผ ํ•จ (Integer.parseInt() ์‚ฌ์šฉ)
  • IOException์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋“ฑ Scanner์— ๋น„ํ•ด ์‚ฌ์šฉ๋ฒ•์ด ๋ณต์žก

[ ์ฝ”๋“œ ]

  • BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); → ๊ฐ์ฒด ์„ ์–ธ
  • String line = reader.readLine(); → ํ•œ ์ค„ ์ž…๋ ฅ
  • int number = Integer.parseInt(reader.readLine()); → ์ •์ˆ˜ ์ž…๋ ฅ (๋ณ€ํ™˜)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line = reader.readLine(); // ํ•œ ์ค„ ์ž…๋ ฅ๋ฐ›๊ธฐ
int number = Integer.parseInt(reader.readLine()); // ์ •์ˆ˜ ์ž…๋ ฅ๋ฐ›๊ธฐ

 

3) StringTokenizer

[ ์žฅ์  ]

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

[ ๋‹จ์  ]

  • ์ž…์ถœ๋ ฅ ์ž‘์—…์€ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ด๋ฏธ ์ œ๊ณต๋œ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰

[ ์ฝ”๋“œ ]

  • BufferedReader๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , StringTokenizer๋กœ ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๊ฐ•์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • tokenizer.countTokens() : ํ† ํฐ์˜ ๊ฐœ์ˆ˜๋ฅผ return
  • tokenizer.nextToken() : ๋‹ค์Œ ํ† ํฐ์„ return
  • tokenizer.hasMoreTokens() : ๋‹ค์Œ ํ† ํฐ์ด ์กด์žฌํ•˜๋Š”์ง€ t/f return
// ํŒŒ์ผ์—์„œ ์ˆซ์ž๋ฅผ ์ฝ์–ด ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ

import java.io.*;
import java.util.StringTokenizer;

public class FastInputExample {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer tokenizer;

        String line = reader.readLine(); // ํ•œ ์ค„ ์ฝ๊ธฐ
        tokenizer = new StringTokenizer(line, " "); // ๊ณต๋ฐฑ ๊ธฐ์ค€์œผ๋กœ ํ† ํฐํ™”

        int sum = 0;
        while (tokenizer.hasMoreTokens()) {
            sum += Integer.parseInt(tokenizer.nextToken());
        }
        System.out.println("Sum: " + sum);
    }
}

 

4) BufferedWriter

[ ์žฅ์  ]

  • ๋Œ€๋Ÿ‰ ์ถœ๋ ฅ์‹œ System.out๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • ์ถœ๋ ฅ ๋‚ด์šฉ์„ ๋ฒ„ํผ์— ์Œ“์•„ ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ•˜์—ฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ

[ ๋‹จ์  ]

  • flush()์™€ close()๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๋“ฑ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง
    • BufferedWriter๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฒ„ํผ(buffer)๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•œ๋‹ค. ๋•Œ๋ฌธ์— ์ถœ๋ ฅ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ์žฅ์น˜(ํ™”๋ฉด, ํŒŒ์ผ ๋“ฑ)๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ํŠน์ • ์‹œ์ ์—์„œ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.
๋”๋ณด๊ธฐ

flush()

  • ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ์ถœ๋ ฅ ์žฅ์น˜๋กœ ๋‚ด๋ณด๋ƒ„
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์— ๊ฐ•์ œ๋กœ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๊ฑฐ๋‚˜, ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์ „ ๋ฒ„ํผ๋ฅผ ๋น„์›Œ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ
    • ex) ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์ด๋‚˜ ๋กœ๊ทธ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ธฐ๋กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ flush() ํ˜ธ์ถœ
  • ๋ฒ„ํผ๊ฐ€ ๋น„์›Œ์ง€๊ณ , ๋ฒ„ํผ์— ์Œ“์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋Œ€์ƒ ์ถœ๋ ฅ ์žฅ์น˜(ํŒŒ์ผ, ์ฝ˜์†”)๋กœ ์ „์†ก๋จ
    • ์ดํ›„ ๋ฒ„ํผ๋Š” ๋น„์–ด ์žˆ์œผ๋ฏ€๋กœ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ

close()

  • ๋‚จ์€ ๋ฒ„ํผ๋ฅผ ์ž๋™์œผ๋กœ flush()ํ•œ ํ›„, ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์•„(๋ฆฌ์†Œ์Šค ํ•ด์ œ)ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€
    • ๋ชจ๋“  ์ž‘์—…์ด ๋๋‚œ ํ›„, ์ŠคํŠธ๋ฆผ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ํ˜ธ์ถœ
    • ์ŠคํŠธ๋ฆผ์„ ๋‹ซ์ง€ ์•Š์œผ๋ฉด ์ž์› ๋ˆ„์ˆ˜(resource leak)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ๋‚ด๋ถ€์ ์œผ๋กœ flush()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋‚จ์•„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ŠคํŠธ๋ฆผ ๋ฆฌ์†Œ์Šค๋ฅผ ์‹œ์Šคํ…œ์— ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹.

flush()์™€ close()๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ?

close() ํ•จ์ˆ˜์— ๋‚ด๋ถ€์ ์œผ๋กœ flush() ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ์ฝ”๋“œ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด ๋ณด๋ฉด flush() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๋’ค close() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. close()๋งŒ ํ˜ธ์ถœํ•ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ™์€๋ฐ ์™œ flush() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์„๊นŒ?

  1. ์•ˆ์ „ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ณด์žฅ : close()๋งŒ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ŠคํŠธ๋ฆผ์ด ๋‹ซํžˆ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ. flush()๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด, ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ธฐ ์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์™„์ „ํžˆ ์ถœ๋ ฅ ์žฅ์น˜๋กœ ์ „์†ก๋˜์—ˆ๋Š”์ง€ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ
  2. ์ค‘๊ฐ„ ์ถœ๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ : ๋ฐ์ดํ„ฐ๋ฅผ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ „์†กํ•˜๋Š” ์ค‘๊ฐ„์— ํ˜„์žฌ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  3. ๋ช…ํ™•ํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ : flush() ํ˜ธ์ถœ ์‹œ์ ์„ ๋ช…ํ™•ํžˆ ํ•˜์—ฌ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ํ•จ. ๋ฒ„ํผ ๋น„์šฐ๊ธฐ ์‹œ์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์–ธ์ œ ์ถœ๋ ฅ๋˜์—ˆ๋Š”์ง€ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
  4. close() ํ˜ธ์ถœ ์‹คํŒจ ๋Œ€๋น„ : ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ธฐ ์ „ ์˜ˆ์™ธ๋กœ ์ธํ•ด close()๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆด ์œ„ํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ flush()๋ฅผ ๋ฏธ๋ฆฌ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ๋’ค ๋‹ซ๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•จ
  5. ๋„คํŠธ์›Œํฌ์™€ ๊ฐ™์€ ์‹ค์‹œ๊ฐ„ ์ถœ๋ ฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  6. ์ผ๊ด€๋œ ์Šต๊ด€ ๋ฐ ์œ ์ง€๋ณด์ˆ˜
  • IOException์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋“ฑ ์‚ฌ์šฉ๋ฒ•์ด ๋ณต์žก

[ ์ฝ”๋“œ ]

  • BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); → ๊ฐ์ฒด ์„ ์–ธ
  • writer.write("Hello, World!\n"); → ("") ๋‚ด๋ถ€์˜ ๊ฐ’์„ ์ถœ๋ ฅ
  • writer.flush(); → ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๊ณ , ๋ฒ„ํผ์— ์Œ“์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ
  • writer.close(); → ๋ฒ„ํผ๋ฅผ flushํ•˜๊ณ , ์ŠคํŠธ๋ฆผ์„ ์ข…๋ฃŒ
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
writer.write("Hello, World!\n"); // ๋ฌธ์ž์—ด ์ถœ๋ ฅ
writer.flush(); // ์ถœ๋ ฅ ๋ฒ„ํผ ๋น„์šฐ๊ธฐ
writer.close(); // ์ŠคํŠธ๋ฆผ ๋‹ซ๊ธฐ

 

5) StringBuilder

[ ์žฅ์  ]

  • ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ฌธ์ž์—ด์„ ๋ˆ„์ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์™€ ์†๋„์—์„œ ํฐ ์ด์ 
  • ๋ณต์žกํ•œ ์ถœ๋ ฅ ๋กœ์ง์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ ๊ฐ€๋Šฅ

[ ๋‹จ์  ]

  • ์ž…์ถœ๋ ฅ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด BufferedWriter๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, StringBuilder ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ๋ฐœ์ƒ
    • StringBuilder๋Š” ๋ฌธ์ž์—ด์„ ํšจ์œจ์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋กœ, ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ ๋ฌธ์ž์—ด์˜ ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๋ณด๋‹ค ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— BufferedWriter ํด๋ž˜์Šค์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ์žฅ์น˜๋กœ ์ „์†กํ•ด์•ผ ํ•œ๋‹ค.

[ ์ฝ”๋“œ ]

  • BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); → ๊ฐ์ฒด ์„ ์–ธ
  • StringBuilder sb = new StringBuilder(); → ๊ฐ์ฒด ์„ ์–ธ
  • sb.append("Line 1").append("\n"); → 1๋ฒˆ์งธ ๋ผ์ธ ์ถ”๊ฐ€
  • sb.append("Line 2").append("\n"); → 2๋ฒˆ์งธ ๋ผ์ธ ์ถ”๊ฐ€
  • writer.write(sb.toString()); → ์ถœ๋ ฅ (StringBuilder๋Š” String ํƒ€์ž…์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ toString ํ•จ์ˆ˜๋กœ ๋ฌธ์ž์—ด ๋ณ€ํ™˜ ํ•„์š”)
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();

sb.append("Line 1").append("\n");
sb.append("Line 2").append("\n");

writer.write(sb.toString());
writer.flush();
writer.close();

 


 

์ด์ •๋ฆฌ

๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ Scanner ์ฝ”๋“œ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ 
๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ/์ถœ๋ ฅ BufferedReader + BufferedWriter ๋น ๋ฅด๊ณ  ํšจ์œจ์ 
๋ฌธ์ž์—ด ๋ฐ˜๋ณต ์ถœ๋ ฅ ์ฒ˜๋ฆฌ BufferedWriter + StringBuilder ๋ฐ˜๋ณต ์ž‘์—…์—์„œ ์„ฑ๋Šฅ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ
  • ๋Œ€๋Ÿ‰ ์ž…๋ ฅ/์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ BufferReader์™€ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™”
  • ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ด์•ผ ํ•  ๊ฒฝ์šฐ StringBuilder๋ฅผ ์ ๊ทน ํ™œ์šฉ
  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆซ์ž์ธ ๊ฒฝ์šฐ, BufferReader๋กœ ๋ฐ›์€ ํ›„ ์ฆ‰์‹œ ๋ณ€ํ™˜(Integer.parseInt)ํ•˜์—ฌ ์‚ฌ์šฉ
  • ์ผ๋ถ€ ํ”Œ๋žซํผ์€ ํŠน์ • ์ž…์ถœ๋ ฅ ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ ์ „ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ํ™•์ธ
728x90
320x100