阅读ePub文件的内容时引发EOFException

问题描述:

我正尝试使用库epublib读取ePub文件的内容,并且此example表明这一点。阅读ePub文件的内容时引发EOFException

对于我来说,为什么代码不工作异常是从输入流

// Load Book from inputStream 
Book book = (new EpubReader()).readEpub(epubInputStream); 

不知道装的书的时候抛出的异常被抛出给我吗?它已经为*的其他用户工作。

完整的堆栈跟踪如下共享:

W/System.err: java.io.EOFException 
W/System.err:  at libcore.io.Streams.readFully(Streams.java:83) 
W/System.err:  at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:235) 
W/System.err:  at nl.siegmann.epublib.epub.EpubReader.readResources(EpubReader.java:184) 
W/System.err:  at nl.siegmann.epublib.epub.EpubReader.readEpub(EpubReader.java:94) 
W/System.err:  at nl.siegmann.epublib.epub.EpubReader.readEpub(EpubReader.java:53) 
W/System.err:  at nl.siegmann.epublib.epub.EpubReader.readEpub(EpubReader.java:37) 
W/System.err:  at com.blogspot.gsrikar.ePubViewerActivity.readEPubContents(ePubViewerActivity.java:102) 
W/System.err:  at com.blogspot.gsrikar.ePubViewerActivity.onCreate(ePubViewerActivity.java:88) 
W/System.err:  at android.app.Activity.performCreate(Activity.java:6904) 
W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266) 
W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
W/System.err:  at android.app.ActivityThread.-wrap17(ActivityThread.java) 
W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err:  at android.os.Looper.loop(Looper.java:148) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:7325) 
W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+2

你多试一个本书文件的更多?你确定你的epub文件格式正确(可读)吗?你使用了正确的名字吗?文件是否存在?... –

+0

请检查文件位置/目录和文件扩展名。 – minhazur

+0

浪费100个奖励点的信誉点并不是非常明智的做法,但是不能提供足够的信息,而只是提供一行代码。请提供带有源代码的[MCVE](http://*.com/help/mcve),有关EPUB的下载链接以及其他可能有用的内容。帮助社区帮助你,否则你将得不到有意义的答案。 – kriegaex

EOFException类抛出:

  • 如果在没有数据,但你想读..如读取 链式流的方法,如DataInputStream,ObjectInputStream throw EOFException如果他们试图从的FileInputStream 读但FileInputStream中为空或

  • 如果格式不匹配......例如,如果int是当前和您使用readFloat()DataInputStream类的

在将它传递给readEpub之前,您应该尝试调用以下方法。 Java文档链接:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#available()

//assuming the above variables are already declared. 
if(epubInputStream.available() > 0) 
    Book book = (new EpubReader()).readEpub(epubInputStream); 
else 
    System.out.println("no data to read");