Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 EOFException을 처리하는 방법은 무엇입니까?

<시간/>

특정 시나리오에서 파일의 내용을 읽는 동안 EOFException이 발생하는 시나리오에서는 파일 끝에 도달합니다.

특히, 이 예외는 입력 스트림 개체를 사용하여 데이터를 읽는 동안 발생합니다. 다른 시나리오에서는 파일 끝에 도달하면 특정 값이 발생합니다.

예시

DataInputStream 클래스를 생각해 봅시다. 기본 값을 읽기 위해 readboolean(), readByte(), readChar() 등과 같은 다양한 메서드를 제공합니다. 파일 끝에 도달했을 때 이러한 메소드를 사용하여 파일에서 데이터를 읽는 동안 EOFException이 발생합니다.

import java.io.DataInputStream;
import java.io.FileInputStream;
public class EOFExample {
   public static void main(String[] args) throws Exception {
      //Reading from the above created file using readChar() method
      DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt"));
      while(true) {
         char ch;
         ch = dis.readChar();
         System.out.print(ch);
      }
   }
}

런타임 예외

Hello how are youException in thread "main" java.io.EOFException
   at java.io.DataInputStream.readChar(Unknown Source)
   at SEPTEMBER.remaining.EOFExample.main(EOFExample.java:11)

EOFException 처리

DataInputStream을 사용하여 파일 끝에 도달하지 않고는 파일 내용을 읽을 수 없습니다. 수업. 원하는 경우 InputStream 인터페이스의 다른 하위 클래스를 사용할 수 있습니다.

예시

다음 예에서는 DataInputStream 대신 FileInputStream 클래스를 사용하여 위의 프로그램을 다시 작성했습니다. 파일에서 데이터를 읽습니다.

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class AIOBSample {
   public static void main(String[] args) throws Exception {
      //Reading data from user
      byte[] buf = " Hello how are you".getBytes();
      //Writing it to a file using the DataOutputStream
      DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\data.txt"));
      for (byte b:buf) {
         dos.writeChar(b);
      }
      dos.flush();
      System.out.println("Data written successfully");
   }
}

출력

Data written successfully

다음은 Java에서 EOFException을 처리하는 또 다른 방법입니다 -

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class HandlingEOF {
   public static void main(String[] args) throws Exception {
      DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt"));
      while(true) {
         char ch;
         try {
            ch = dis.readChar();
            System.out.print(ch);
         } catch (EOFException e) {
            System.out.println("");
            System.out.println("End of file reached");
            break;
         } catch (IOException e) {
         }
      }
   }
}

출력

Hello how are you
End of file reached