새소식

반응형
Programming Language/Java

[Java] 자바 EOF(End Of File) 처리

  • -
반응형

자바 로고 이미지입니다.
자바


EOF는 End of File의 약어로, 파일의 끝을 나타내는 특수한 마커이다. 파일에서 더 이상 읽을 내용이 없거나 쓸 내용이 없을 때, EOF 마커가 나타나며, 이는 파일의 끝을 나타내어 프로그램에게 파일의 끝을 인식할 수 있게 한다. 

 

EOF는 주로 파일 읽기나 입력 소스에서 데이터를 읽을 때 사용된다. 예를 들어, 파일의 끝에 도달했을 때 반복문을 종료하는 데 사용할 수 있다. 파일에서 데이터를 읽을 때 EOF를 확인하여 계속해서 읽을지, 아니면 종료할지 결정할 수 있다.

 

파일의 끝은 파일의 끝 부분이 아닌, 파일에서 더 이상 읽을 데이터가 없는 지점을 나타낸다. 파일에서 EOF를 확인하는 방법은 프로그래밍 언어나 도구에 따라 다를 수 있다. 대표적으로 파일 읽기 함수에서 EOF를 확인하는 방법도 있다.

 

자바에서는 EOF(End of File)를 확인하는 데 사용되는 메커니즘이 있다. 주로 파일 읽기, 입력 스트림에서 사용된다. 자바에서 EOF를 확인하기 위해 사용되는 주요 메서드와 클래스는 아래와 같다. 한 번 살펴보자.

 

InputStream 클래스를 사용하여 파일 또는 다른 입력 소스에서 데이터를 읽을 때 read() 메서드를 사용한다. read() 메서드는 더 이상 읽을 데이터가 없을 때 -1을 반환하므로, 이를 이용하여 EOF를 확인할 수 있다.

InputStream inputStream = new FileInputStream("example.txt"); int data; while ((data = inputStream.read()) != -1) { // 파일의 끝에 도달하기 전까지 데이터를 읽음 // data에 읽은 바이트가 저장되며, 파일의 끝에 도달하면 -1이 반환됨 } inputStream.close();

 

 

BufferedReader 클래스를 사용하여 한 줄씩 문자열을 읽을 때 readLine() 메서드를 사용한다. 더 이상 읽을 데이터가 없을 때 null을 반환하므로, 이를 이용하여 EOF를 확인할 수 있다.

BufferedReader bufferedReader = new BufferedReader(new FileReader("example.txt")); String line; while ((line = bufferedReader.readLine()) != null) { // 파일의 끝에 도달하기 전까지 한 줄씩 읽음 // line에 읽은 문자열이 저장되며, 파일의 끝에 도달하면 null이 반환됨 } bufferedReader.close();

 

 

사용자 입력에서 EOF를 확인하는 것은 주로 특정 조건에 도달할 때까지 입력을 계속해서 받는 방식으로 이루어진다. 자바에서는 보통 Scanner 클래스를 사용하여 사용자로부터 입력을 받는다. 

import java.util.Scanner; public class UserInputEOFExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter lines of text (Ctrl+D or Ctrl+Z to exit)"); while (scanner.hasNextLine()) { // hasNextLine()은 더 이상 읽을 줄이 없을 때 false를 반환하므로, 이를 이용하여 루프를 종료. String line = scanner.nextLine(); System.out.println("You entered : " + line); } scanner.close(); } }

사용자로부터 여러 줄의 텍스트를 입력받고, 사용자가 EOF 조건인 Ctrl + D(Unix/Linux) 또는 Ctrl + Z(Windows)를 입력할 때까지 계속해서 입력을 받는다. 사용자 입력에서 EOF를 확인하는 데는 hasNextLine() 메서드가 사용되었다.

 

📢 Windows에서 입력 종료를 위해 Ctrl + Z가 안된다면 Ctrl + D로 시도해 보자.

 

자바에서 Scanner 클래스 외에도 BufferedReader 클래스를 사용하여 사용자 입력을 받고 EOF를 확인할 수 있다.

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter lines of text (Ctrl+D or Ctrl+Z to exit) : "); try { String line; while ((line = reader.readLine()) != null) { // readLine()이 null을 반환하면 EOF 조건입니다. System.out.println("You entered : " + line); } } catch (IOException e) { e.printStackTrace(); } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }

BufferedReader를 사용하여 사용자로부터 한 줄씩 입력을 받고, readLine() 메서드가 null을 반환할 때까지 계속해서 입력을 받는다. 사용자 입력에서 EOF를 확인하는 데에는 readLine() 메서드가 null을 반환하는 조건을 사용한다.

 

마찬가지로 입력 종료를 위해 Ctrl + D 혹은 Ctrl + Z를 눌러보자.

 

728x90
반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.