[자바 코테] java에서 EOF를 처리하는 방법
카테고리: Java Coding Test
태그: java
입력을 얼마나 줄 것인지 문제에서 정해주지 않을 경우 언제까지 받을 것인가..?
백준 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();
}
}
댓글 남기기