2012-12-23 2 views
1

나는 epub의 html 파일을 프로그래밍 방식으로 편집해야하므로 .epub의 압축을 풀고 html 파일에 필요한 수정 작업을 수행하는 파서를 작성해야했습니다. 내 편집의 .epub을 압축 해제하면java.util.zip을 epub에 사용하는 방법

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

의 container.xml가 존재 누락되지 않은 : 내 코드를 사용하여 .epub로 다시 변환 그러나, EpubChecker는 것을 보여준다.

mimetype과 META-INF를 먼저 압축해야한다는 것을 알고 있습니다.

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과를 사용하여 디렉토리를 압축

이 오류가 본 적이되고 제대로 작동 : 여기 EPUB로 다시 파일을 변환하려면 코드입니다. 내가 뭘 잘못하고 있는지 모르겠다. 누군가 제발 도와 주실 수 있습니까? 고마워요.

답변

1

Windows에있는 것처럼 보이므로 FileInputStream(SOURCE_FOLDER + File.separator + "META-INF\\container.xml"); 문은 OS에 맞지만 다른 zipentry 경로에 슬래시를 사용하려면 다른 2 개의 문자열을 변경해야합니다.

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도 조정해야 할 수도 있습니다. (섹션 "4.4.17 파일 이름") the ZIP spec에서 :

모든 슬래시는 거꾸로 슬래시를 반대로 '/'슬래시 수 있어야한다 '\'

+0

화려하게 일했다! 고맙습니다! – user1699366