2017-05-02 5 views
0

Ich stecke auf einen Teil eines Projekt-Code in Java geschrieben. Das Problem ist, jedes Mal, wenn die folgende Methode aufgerufen wird:java.io.EOFException bei der Verwendung von DataInputStream.readUTF zum Lesen von String

public static void printData(File f,int n){ 

    try { 
     DataInputStream dis = new DataInputStream(new FileInputStream(f)); 
     for (int i = 0; i < 5; i++) { 
     System.out.println(dis.readUTF()); 
     } 

     dis.skipBytes(43*(n-10)); 

     for (int i = 0; i < 5; i++) { 
     System.out.println(dis.readUTF()); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

der Code einer EOFException zermalmt warf jedes Mal, wenn ich versuche, eine bestimmte Anzahl von Bytes zu überspringen, in anderen Worten, das Programm stoppt, wenn es wieder zu lesen versucht, in die zweite FOR-Schleife (die erste funktioniert gut), aber es scheint, dass es mit der skipBytes-Methode zusammenhängt ... Aber ich sehe nicht klar, was das verursacht. Jede kleine Hilfe ist willkommen.

Übrigens ist 43 die Anzahl der Bytes jeder Zeile, und n (2^9) ist die Anzahl der in f geschriebenen Zeilen.

+0

Wie anfangs Sie den Wert 'n' bekommen? Ist es ein statischer Wert oder wird er durch einen anderen Code bestimmt? – Sasang

+0

Welchen Wert Gegner '43 * (n-10)' entsprechen? Wie groß ist deine Datei? –

Antwort

0

Siehe Dokumentation der DataInputStream.readUTF() -Methode. Es wirft EOFException wenn:

EOFException - if this stream reaches the end before reading all the bytes. 

Also, Sie alle Bytes schon gelesen oder Sie übersprungen sie bei

dis.skipBytes(43*(n-10)); 
Verwandte Themen