while((entry = zipinput.getNextEntry()) != null)
   {
    if(entry.isDirectory())
    {
     Log.e("폴더", entry.getName());
     makeDirectory(entry.getName());
    }
    else
    {
     Log.e("파일", entry.getName());
     FileOutputStream output = new FileOutputStream(PATH + "/" +entry.getName());
     byte[] buffer = new byte[1024];
     int count;
     while((count = zipinput.read(buffer, 0, 1024)) != -1)
     {
      output.write(buffer, 0, count);
     }
     zipinput.closeEntry();
     output.close();
    }
   }
 private void makeDirectory(String directory) throws IOException
 {
  File dir = new File(mPATH + "/"+ directory);
  if(!dir.isDirectory())
   dir.mkdir();
 }

 

앱 내용중 epub 파일 압축해제하는 부분이 있습니다.

 

구글링해서 얻은 양키판(?) epub 파일은 아무런 문제가 없지만

네이버에서 얻은 국내판(확정지을순 없지만 대체적으로) epub 파일에선 문제가 발생하더군요

 

07-26 18:38:27.143: E/PATH(22194): /mnt/sdcard/3/3
07-26 18:38:27.188: E/파일(22194): mimetype
07-26 18:38:27.208: E/파일(22194): META-INF/container.xml
07-26 18:38:27.208: E/ERROR(22194): java.io.FileNotFoundException: /mnt/sdcard/3/3/META-INF/container.xml: open failed: ENOENT (No such file or directory)

문제점이 epub 파일 내부에 있는 폴더를 인식하지 못해서 META-INF 폴더가 없는 상태에서 META-INF/ 경로에 container.xml 파일을 생성하려다 보니 당연히 생성하지 못하고 에러를 뱉더군요

 

이러한 상황을 겪어보신분 계신가요?

 

 

File mkdir = new File(PATH);
mkdir.mkdir();
mkdir = new File(PATH + "/META-INF");
mkdir.mkdir();
mkdir = new File(PATH + "/OEBPS");
mkdir.mkdir();
물론 임의적으로 위와 같이 epub 파일 내부에 존재하는 폴더이름으로 미리 만들어두면 압축해제는 잘 되지만 이런식으로 개발하면 능동적으로 대처가 안되므로 어떡게든 해결해보려고 합니다.

 

해결책이나 다른 대처방안이 있으시면 가르침 부탁드립니다ㅜㅜ