sco*_*yab 57 java android exception square-tape
我正在使用Square的磁带库将数据上传排队到服务器.
队列以JSON格式存储在File中.当应用程序启动时,我启动队列并开始上传(即如果在Wifi上)但是在用户的某些设备上我看到EOFException了'null'消息(登录崩溃).
FileObjectQueue从现有文件创建对象时发生错误- 从调试信息收集实际文件大约为1MB.
是什么导致了这个或如何防止它? - 也许我需要清理我的java.io.
编辑:使用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)
Run Code Online (Sandbox Code Playgroud)
更新 - 自升级到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)
Run Code Online (Sandbox Code Playgroud)
EOFException 表明已到达文件结尾,即没有更多字节可供读取。此异常只是表明没有更多内容可读取的另一种方式,而其他方法则返回一个值,例如 -1。正如您在错误堆栈跟踪中看到的,引发异常的方法是读取方法;java.io.RandomAccessFile.readFully(RandomAccessFile.java:419)和com.squareup.tape.QueueFile.readHeader(:165)。因此,除非您不读取所有字节(您通常希望这样做),否则无法“阻止”它,只需像这样捕获它即可;catch(EOFException e) { /* ignore */ }:)
https://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html