Java
 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

  1. Javaを使用してディレクトリ階層を作成するにはどうすればよいですか?

    ファイルという名前のクラス java.ioパッケージのは、システム内のファイルまたはディレクトリ(パス名)を表します。このクラスは、ファイル/ディレクトリに対してさまざまな操作を実行するためのさまざまなメソッドを提供します。 mkdir() このクラスのメソッドは、現在のオブジェクトによって表されるパスでディレクトリを作成します。 ディレクトリ階層の作成 新しいディレクトリの階層を作成するには、メソッド mkdirs()を使用できます。 同じクラスの。このメソッドは、存在しない親ディレクトリを含む、現在のオブジェクトによって表されるパスでディレクトリを作成します。 例 import ja

  2. JavaでJSONオブジェクトをファイルに書き込むにはどうすればよいですか?

    JSON 広く使用されているデータ交換の1つです フォーマットし、軽量 および言語 独立 。 json.simple は、JSONファイルの書き込みに使用できる軽量のJSON処理ライブラリです。 エンコードに使用できます またはデコード JSONテキストであり、 Jに完全に準拠しています SON仕様(RFC4627)。 JSONファイルを読み取るには、 json-simple.jarをダウンロードする必要があります ファイルを作成し、それを実行するためのパスを設定します。 例 import java.io.*; import java.util.*; import org.json.s