[자바 코테] java에서 EOF를 처리하는 방법

Update:     Updated:

카테고리:

태그:

입력을 얼마나 줄 것인지 문제에서 정해주지 않을 경우 언제까지 받을 것인가..?

백준 4949번 문제를 풀다가 문제를 잘못 해석해서 삽질했었는데, 나름 의미있는 삽질인 것 같아 정리해본다.

해당 문제에서는 .이 파일의 입력 종료 조건으로 주어졌는데, 별도의 입력 종료 조건이 주어지지 않았다면 어떻게 해야할까?

이건 언어마다 EOF(End Of File)을 어떻게 처리할 것인가를 보면 된다.

Java의 Scanner와 BufferedReader에서 EOF를 처리하는 방법

Scanner: NoSuchElementException을 던진다. 따라서 try-catch로 구성해서 예외를 잡아주면 될 것이다.
BufferedReader: readLine() 메소드는 null을 반환한다. 따라서 null을 trigger로 코드를 짜면 된다.

번외 - Java에서 File을 읽고 쓰는 것은 어떻게 할까?

// File file = new File("{file_path}");

// 읽기
InputStream inStm = new FileInputStream("{file_path}");  // file_path 대신 file 객체를 전달해도 됨
BufferedReader br = new BufferedReader(new InputStreamReader(inStm));

// 쓰기
OutputStream outStm = new FileOutputStream("{file_path}");  // file_path 대신 file 객체를 전달해도 됨
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outStm));
// 사용 예시
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException{
        String inputFilePath = "/Users/june/Downloads/4949.txt";
        String outputFilePath = "/Users/june/Downloads/4949_new.txt";

        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inputFilePath)));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFilePath)));

        while (true) {
            String input = br.readLine();
            if (input == null) break;

            bw.write(input + "\n");
        }

        bw.flush();
        bw.close();
    }
}

Java Coding Test 카테고리 내 다른 글 보러가기

댓글 남기기