ファイル拡張子が「epub」のzipドキュメントにフォルダーの内容を再帰的に追加するメソッドを作成しました。これは基本的にepubとは異なります。
アーカイブの最初のドキュメントには「mimetype」という名前を付ける必要があり、タイプはapplication / epub + zipで指定する必要があり、バイトオフセット38で開始する必要があります。オフセット38でアーカイブにmimetypeを追加する方法はありますか?
私が構築した方法はほぼ機能します。ほとんどの電子書籍リーダーが読み取れるePubを構築しますが、検証は行いません。EpubCheckはこのエラーを出します:
mimetype contains wrong type (application/epub+zip expected)
これは、元のテストepubには存在しない問題ですが、再構築されたepubには表示されます。そして、解凍/再解凍された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();