EOFException beim Lesen von QueueFile-Band

Ich verwende die Tape- Bibliothek von Square, um das Hochladen von Daten auf den Server aufzurufen.

Die Warteschlange wird in Datei im JSON-Format gespeichert. Wenn die App startet, beginne ich die Warteschlange und EOFException hochladen (dh wenn auf Wifi) Aber bei einigen Geräten auf Benutzern sehe ich EOFException mit 'null' Nachricht (angemeldet in Crashlytics).

Der Fehler tritt beim Erstellen eines FileObjectQueue Objekts aus einer vorhandenen Datei auf – aus dem Debug-Info sammelt die eigentliche Datei ~ 1MB.

Irgendwelche Ideen, was das verursacht oder wie man es verhindert? – vielleicht muss ich mich auf meine java.io

Bearbeiten: Verwenden von Tape v1.2.1

 Caused by: java.io.EOFException at java.io.RandomAccessFile.readFully(RandomAccessFile.java:419) at java.io.RandomAccessFile.readInt(RandomAccessFile.java:439) at com.squareup.tape.QueueFile.readElement(:182) at com.squareup.tape.QueueFile.readHeader(:162) at com.squareup.tape.QueueFile.(:110) at com.squareup.tape.FileObjectQueue.(:35) at com.myapp.queue.MyUploadTaskQueue.create(:125) 

Aktualisiert – Siehe auch diesen Fehler seit dem Upgrade auf 1.2.2

 Caused by: java.io.IOException: File is corrupt; length stored in header is 0. at com.squareup.tape.QueueFile.readHeader(:165) at com.squareup.tape.QueueFile.<init>(:117) at com.squareup.tape.FileObjectQueue.<init>(:35) 

One Solution collect form web for “EOFException beim Lesen von QueueFile-Band”

Die EOFException zeigt, dass End Of File erreicht wurde, dh es gibt keine Bytes mehr zu lesen. Diese Ausnahme ist nur eine andere Möglichkeit zu signalisieren, dass es nichts mehr zu lesen gibt, während andere Methoden einen Wert zurückgeben, wie -1. Wie Sie in Ihrem Fehler Stack Trace sehen können, sind die Methoden, die die Ausnahme zu werfen, gelesen Methoden; java.io.RandomAccessFile.readFully(RandomAccessFile.java:419) und com.squareup.tape.QueueFile.readHeader(:165) . Als solches kann es nicht "verhindert" werden, es sei denn, Sie lesen nicht alle Bytes (was Sie normalerweise wollen), fangen Sie es einfach so; catch(EOFException e) { /* ignore */ } 🙂 https://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html

Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.