阅读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)
答
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");
你多试一个本书文件的更多?你确定你的epub文件格式正确(可读)吗?你使用了正确的名字吗?文件是否存在?... –
请检查文件位置/目录和文件扩展名。 – minhazur
浪费100个奖励点的信誉点并不是非常明智的做法,但是不能提供足够的信息,而只是提供一行代码。请提供带有源代码的[MCVE](http://*.com/help/mcve),有关EPUB的下载链接以及其他可能有用的内容。帮助社区帮助你,否则你将得不到有意义的答案。 – kriegaex