안드로이드 개발 질문/답변
(글 수 45,052)
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 파일 내부에 존재하는 폴더이름으로 미리 만들어두면 압축해제는 잘 되지만 이런식으로 개발하면 능동적으로 대처가 안되므로 어떡게든 해결해보려고 합니다.
해결책이나 다른 대처방안이 있으시면 가르침 부탁드립니다ㅜㅜ