пару дней назад была добавлена библиотека для чтения Epub здесь , я пытался ее использовать, но у нее есть некоторые трудности, она может открывать Epubs только из ресурсов, но не из файловой системы, поэтому я решил скачать исходники и сделать некоторые адаптации.
Сначала я написал небольшую функцию, которая открывает файл Epub в виде потока:
public static InputStream GetFileAsStream(String fName) {
FileConnection fconn = null;
DataInputStream is = null;
try {
fconn = (FileConnection) Connector
.open(fName, Connector.READ_WRITE);
is = fconn.openDataInputStream();
} catch (IOException e) {
System.out.println(e.getMessage());
return is;
Затем я заменил вызов, открывающий файл в com.omt.epubreader.domain.epub.java
, и стало так:
public Book getBook(String url)
{
InputStream in = ConnectionController.GetFileAsStream(url);
...
return book;
}
после этого я смог успешно прочитать файл, но появилась проблема, он не смог прочитать разделы, то есть файлы .html
, поэтому я вошел в короткую сессию отладки, прежде чем нашел проблему, кто бы написал эту библиотеку, оставил код, который читает имена файлов .html, пустым, в com.omt.epubreader.parser.NcxParser
это было так:
private void getBookNcxInfo()
{
...
if(pars.getEventType() == XmlPullParser.START_TAG &&
pars.getName().toLowerCase().equals(TAG_CONTENT))
{
if(pars.getAttributeCount()>0)
{
}
}
...
}
Я только что добавил эту строку в предложение if
:
contentDataFileName.addElement(pars.getAttributeValue("", "src"));
и после этого он работал просто отлично.