컴퓨터는 잘못이 없다..

[JAVA]콘솔 입출력, 파일 입출력 (+printf 예제) 본문

공부/JAVA

[JAVA]콘솔 입출력, 파일 입출력 (+printf 예제)

도토리까꿍v 2024. 4. 20. 18:42
Contents 접기

#핵심 요약

  • 콘솔 입력 방식 4가지
    1. System.in.read()
    2. InputStreamReader reader = ...
    3. BufferedReader br = ..
    4. Scanner sc = .. 
  • 콘솔 출력 방식 3가지
    1. System.out.println()
    2. System.out.print()
    3. System.out.printf()
  • 파일 입력 (파일로부터 내용을 입력받음)
    • FileInputStream ...
    • BufferedReader ...
  • 파일 출력(파일로 내용을 출력)
    • FileOutputStream ...
    • FileWriter ...
    • PrintWriter ...

#소스코드

콘솔 입출력 예제

// Java 프로그래밍 - 입출력_1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Main {

    public static void referInputStream() throws IOException {
//      System.in
        System.out.println("== System.in ==");
        System.out.print("입력: ");
        int a = System.in.read() - '0';
        System.out.println("a = " + a);
        System.in.read(new byte[System.in.available()]); //남아있는 데이터(엔터키)를 소진해서 없애주어야 한다.

//      InputStreamReader
        System.out.println("== InputStreamReader ==");
        InputStreamReader reader = new InputStreamReader(System.in); //읽고자하는 만큼의 크기의 배열을 생성해서 입력받아야한다.
        char[] c = new char[3];
        System.out.print("입력: ");
        reader.read(c);
        System.out.println(c);

//      BufferedReader
        System.out.println("== BufferedReader ==");
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //System.in와 InputStreamReader 를 합쳐놓은 느낌
        System.out.print("입력: ");
        String s1 = br.readLine();
        System.out.println("s1 = " + s1);
    }

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

//      1. 입력
//      1-1. 다른 입력 방식 참고
//        referInputStream();

//      1-2. Scanner -> 자주 사용하는 입력 방식
        System.out.println("== Scanner ==");
        System.out.print("입력1: ");
        Scanner sc = new Scanner(System.in);
        System.out.println(sc.next()); //데이터를 입력받아서 바로 출력
        sc.nextLine(); //엔터키 소진을 위해 작성 (남아있는 데이터 제거)

        System.out.print("입력2: ");
        System.out.println(sc.nextInt()); //int값만 입력받을 수 있다.
        sc.nextLine(); //엔터키 소진을 위해 작성 (남아있는 데이터 제거)

        //가장 많이 사용하는 방법
        System.out.print("입력3: ");
        System.out.println(sc.nextLine()); 


//      참고) 정수, 문자열 변환 -> 자주 사용함
        int num = Integer.parseInt("12345"); //문자열을 숫자로 변환
        String str = Integer.toString(12345); //숫자를 문자열로 변환
        
//      2. 출력
        System.out.println("== 출력 ==");
        System.out.println("Hello");
        System.out.println("World!");

        System.out.print("Hello ");
        System.out.print("World!");

        System.out.printf("Hello ");
        System.out.printf("World!");
        System.out.println();

        String s = "자바";
        int number = 3;

        System.out.println(s + "는 언어 선호도 " + number + "위 입니다."); //자바는 언어 선호도 3위 입니다.
        System.out.printf("%s는 언어 선호도 %d위 입니다.\n", s, number); //자바는 언어 선호도 3위 입니다.

        System.out.printf("%d\n", 10); //정수형, 10
        System.out.printf("%o\n", 10); //8진수, 12
        System.out.printf("%x\n", 10); //16진수, a

        System.out.printf("%f\n", 5.2f); //실수형, 5.200000
        
        System.out.printf("%c\n", 'A'); //문자
        System.out.printf("%s\n", "안녕하세요"); //문자열

        //공백과 함께 숫자 출력하기 %xd x자리 공간을 먼저 확보하고 숫자를 채워넣음
        System.out.printf("%5d\n", 123); //오른쪽정렬
        System.out.printf("%-5d\n", 123); //왼쪽정렬
        System.out.printf("%05d\n", 123); //남은공간에 0으로 채우기
        System.out.printf("%5d\n", 1234);
        System.out.printf("%5d\n", 12345);

        System.out.printf("%.2f\n", 1.126123f); //소수점 2번째 자리 (반올림)

    }
}

 

파일 입출력 -1 : 기본예제

// Java 프로그래밍 - 입출력_2

import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {
//      1. 파일 쓰기
//      FileWriter
        FileWriter fw = new FileWriter("./memo.txt"); // (./) : 현재폴더를 의미
        String memo = "헤드 라인\n";
        fw.write(memo); //작성해주기

        memo = "1월 1일 날씨 맑음\n";
        fw.write(memo); //작성해주기
        fw.close();

//      PrintWriter
        PrintWriter pw = new PrintWriter("./memo.txt");
        memo = "헤드 라인";
        pw.println(memo);
        memo = "1월 1일 날씨 맑음";
        pw.println(memo);
        pw.close();

        //FileWriter 파일 이어쓰기 (파일이 이미 작성된 상태에서 이어쓰는 방법)
        FileWriter fw2 = new FileWriter("./memo.txt", true);
        memo = "1월 2일 날씨 완전 맑음\n";
        fw2.write(memo);
        fw2.close();

        //PrintWriter 파일 이어쓰기 (파일이 이미 작성된 상태에서 이어쓰는 방법)
        PrintWriter pw2 = new PrintWriter(new FileWriter("./memo.txt", true));
        memo = "1월 3일 날씨 또 맑음!";
        pw2.println(memo);
        pw2.close();


//      2. 파일 입력
        BufferedReader br = new BufferedReader(new FileReader("./memo.txt"));
        while (true) {
            String line = br.readLine();
            if (line == null) {
                break;
            }
            System.out.println(line);
        }
        br.close();

    }
}

 

파일 입출력 - 2 : 연습문제

// Practice
// JamesArthurGosling.txt 파일을 읽은 후 원하는 단어 변경하여 새로 저장해보자.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Practice {
    public static void main(String[] args) throws IOException {
        String inputFile = "./JamesArthurGosling.txt";
        String outputFile = "./JamesArthurGosling_edit.txt";

        // 찾을 단어 / 변경 단어 입력 받기
        System.out.print("찾을 단어: ");
        Scanner sc = new Scanner(System.in);
        String find = sc.nextLine();
        System.out.print("변경 단어: ");
        String to = sc.nextLine();

        // 파일 읽기, 변경 및 저장
        BufferedReader br = new BufferedReader(new FileReader(inputFile));
        FileWriter fw = new FileWriter(outputFile);

        while (true) {
            String line = br.readLine(); //파일을 한줄씩 저장
            if (line == null) {
                break;
            }
            String newLine = line.replace(find, to); //문자열중 find를 찾아 to로 변경
            fw.write(newLine + '\n'); //파일 쓰기 (한줄 씩 가져왔으므로 끝에 \n을 넣어준다.))
        }
        br.close();
        fw.close();
    }
}
Comments