我编写了一个方法,它会递归地将文件夹的内容添加到zip文档中,并将文件扩展名命名为“epub”,这基本上就是一个epub,除了一件事情:存档中的第一个文档必须命名为“mimetype”,类型必须指定为application/epub+zip,并且必须以38个字节偏移量开头。有没有办法将mimetype添加到偏移量为38的存档中呢?
我编写的方法几乎可以使用。它构建了一个可以被大多数电子阅读器阅读的epub,但它无法验证。EpubCheck 给出了以下错误:
我编写的方法几乎可以使用。它构建了一个可以被大多数电子阅读器阅读的epub,但它无法验证。EpubCheck 给出了以下错误:
mimetype contains wrong type (application/epub+zip expected)
这是一个在原始测试epub中不存在的问题,但在重建的epub中出现了。我已经仔细检查了解压缩/重新压缩的mimetype文件的内容确保正确。
添加mimetype文件到归档文件的方法太长,在此无法贴出。但以下是我用来添加mimetype文件到归档文件的代码:
out = new ZipOutputStream(new FileOutputStream(outFilename));
FileInputStream in = new FileInputStream(mimeTypePath);
out.putNextEntry(new ZipEntry("mimetype"));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
out.close();