簡體   English   中英

如何為epub使用java.util.zip

[英]How to use java.util.zip for epub

我必須以編程方式編輯epubs的html文件,所以我要做的是解壓縮.epub並創建解析器以對html文件進行必要的編輯。 但是,當我使用代碼將它們轉換回.epub時,EpubChecker顯示:

Error: Required META-INF/container.xml resource is missing

當我解壓縮編輯的.epub時,container.xml存在並且不丟失。

我知道必須先壓縮mimetype和META-INF。 這是將文件轉換回epub的代碼:

    FileOutputStream fos = new FileOutputStream(zipFile);
    ZipOutputStream zos = new ZipOutputStream(fos);

    System.out.println("Output to Zip : " + zipFile);
    writeMimeType(zos);
    ZipEntry container = new ZipEntry("META-INF\\container.xml");
    zos.putNextEntry(container);
    FileInputStream inMime2 = new FileInputStream(SOURCE_FOLDER + File.separator + "META-INF\\container.xml");
    int len2;
    while((len2 = inMime2.read(buffer)) > 0){
        zos.write(buffer, 0, len2);
    }
    inMime2.close();
    for(String file : this.fileList){
            if(!file.toString().equals("mimetype") && !file.toString().equals("META-INF\\container.xml")){
                System.out.println("File Added : " + file);
                ZipEntry ze= new ZipEntry(file);
                zos.putNextEntry(ze);

                FileInputStream in = 
                    new FileInputStream(SOURCE_FOLDER + File.separator + file);

                int len;
                while ((len = in.read(buffer)) > 0) {
                        zos.write(buffer, 0, len);
                }

                in.close();
           }
    }

    zos.closeEntry();
    zos.close();

當我使用WinRar手動壓縮目錄時,沒有看到錯誤,並且可以正常工作。 我不知道我在做什么錯。 有人可以幫我嗎?謝謝。

看起來就像您在Windows上,因此您的FileInputStream(SOURCE_FOLDER + File.separator + "META-INF\\\\container.xml"); 聲明對於操作系統是正確的,但是我想您需要更改其他2個字符串以對zipentry路徑使用正斜杠。

ZipEntry container = new ZipEntry("META-INF\\container.xml");

嘗試作為

ZipEntry container = new ZipEntry("META-INF/container.xml");

並改變

if(!file.toString().equals("mimetype") && !file.toString().equals("META-INF\\container.xml")){

if(!file.toString().equals("mimetype") && !file.toString().equals("META-INF/container.xml")){

相應地。

您可能還需要調整其他ZipEntry ZIP規范 (“ 4.4.17文件名”部分):

所有斜杠必須是正斜杠“ /”,而不是反斜杠“ \\”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM