English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Come leggere fino alla fine di DataInputStream senza catturare EOFException in Java?

Testo

In alcuni casi, quando si legge il contenuto del file, viene sollevata EOFException in questo caso.

In particolare, viene sollevata questa eccezione quando si legge i dati utilizzando l'oggetto Input Stream. In altri casi, viene sollevata una specifica valore quando si raggiunge la fine del file.Nella classe DataInputStream, fornisce vari metodi, ad esempioreadByte()readboolean()readByte(),readChar()

Esempio

Ecc. I valori originali letti. Quando si leggono dati dal file utilizzando questi metodi, viene sollevata EOFException quando si raggiunge la fine del file.

Il seguente programma dimostra come gestire EOFException in Java.
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class AIOBSample {}}
   public static void main(String[] args) throws Exception {
      //Lettura dei dati dell'utente
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci una Stringa:");
      String data = sc.nextLine();
      byte[] buf = data.getBytes();
      //Scrive nel file
      DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\data.txt"));
      for (byte b : buf) {
         dos.writeChar(b);
      }
      dos.flush();
      //Lettura del file creato in precedenza utilizzando il metodo readChar()
      import java.io.DataInputStream;
      DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt"));
         while(true) {
         char ch;
         ch = dis.readChar();
      }
   }
}

Risultato di output

Inserisci una Stringa:
System.out.print(ch);
hello how are you
   helException in thread "main" lo how are youjava.io.EOFException
   at java.io.DataInputStream.readChar(Unknown Source)

at MyPackage.AIOBSample.main(AIOBSample.java:27)

Non è possibile leggere DataInputStream senza catturare l'eccezioneDataInputStreamLa classe legge il contenuto del file fino a raggiungere la fine del file. Se necessario, possono essere utilizzati altri sottoclasse dell'interfaccia InputStream.

Esempio

Nella seguente esempio, utilizziamo la classe FileInputStream invece di DataInputStream per riscrivere il programma sopra riportato, per leggere i dati dal file.

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 {
      //Lettura dei dati dell'utente
      Scanner sc = new Scanner(System.in);
      System.out.println("Inserisci una Stringa:");
      String data = sc.nextLine();
      byte[] buf = data.getBytes();
      //Scrive nel file
      DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\data.txt"));
      for (byte b : buf) {
         dos.writeChar(b);
      }
      dos.flush();
      //Lettura del file creato in precedenza utilizzando il metodo readChar()
      File file = new File("D:\\data.txt");
      FileInputStream fis = new FileInputStream(file);
      byte b[] = new byte[(int) file.length()];
      fis.read(b);
      System.out.println("Contenuti del file: " + new String(b));
   }
}

Risultato di output

Inserisci una Stringa:
Hello how are you
Contenuti del file: H e l l o h o w a r e y o u
Ti potrebbe interessare