마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

폴더를 압축한 zip 파일을 해제하려고 합니다..

0 추천
안녕하세요 초보개발자 지바냥입니다.

현재 일반 파일을 압축한 zip 파일은 아래 소스로 압축 해제가 잘 되고 있는데요..

폴더를 압축한 zip 파일이 압축 해제가 안되고 있어 골머리를 앓고 있네요 ㅠㅠ

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

해당 퍼미션도 추가가 되어있고 뭐가 문제인지 몰라 결국 질문글을 올리게 되었습니다.

혹시 폴더가 압축된 zip파일을 해제할경우에는 다른 방식으로 해야하는 것인지 답변 부탁 드립니다 ㅠㅠ

 

UnZip ----------------------------------------

public void unzip(String aZipFile, String aLocation) {

  try {
   FileInputStream fin = new FileInputStream(aZipFile);
   ZipInputStream zin = new ZipInputStream(fin);
   ZipEntry ze = null;

   while ((ze = zin.getNextEntry()) != null) {

    FileOutputStream fout = new FileOutputStream(aLocation + File.separator + ze.getName());
    BufferedInputStream in = new BufferedInputStream(zin);
    BufferedOutputStream out = new BufferedOutputStream(fout);
    byte b[] = new byte[buffSize];
    int n;
    while ((n = in.read(b, 0, buffSize)) >= 0) {
     out.write(b, 0, n);
    }
   

    zin.closeEntry();
    out.close();

   }
   zin.close();
  }
  catch (Exception e) {
   UtilLog.e("Asdf");
   UtilLog.e("Asdf");
  }

 }

 

Activity ----------------------------------------------------------------

String dest = UtilFile.pathForResource("해제경로");
   File root = new File(dest);
   if (!root.exists()) {
    root.mkdirs();
   }

   UtilDecompress unzip = new UtilDecompress();

   String zipFile = UtilFile.pathForResource("파일경로");
   String Path = dest;

   UtilLog.e("UNZIP Start");
   unzip.unzip(zipFile, Path);
   UtilLog.e("UNZIP End");
로보냥 (270 포인트) 님이 2015년 9월 8일 질문
로보냥님이 2015년 9월 8일 reshown

1개의 답변

+1 추천
 
채택된 답변

디렉토리일 때의 처리가 안 된듯 합니다.

ze.isDirectory() 로 검사해서 true일 때는 파일 복사를 하지 말고, 폴더를 만드는 등의 처리를 넣어주셔야 할 듯 합니다. 

익명사용자 님이 2015년 9월 8일 답변
로보냥님이 2015년 9월 8일 채택됨
감사합니다~ 폴더를 압축한 파일을 해제하려면 압축파일 내부에 있는 폴더명으로 폴더를 만들어야 하는 과정이 필요한거네요 ㅠㅠ 많이 배워 갑니다!
꼭 만드실 필욘 없구요.
폴더라 inputstream read 시 오류가 발생해서, 발생하지 않게 하라는 의미입니다.
if(ze.isDirectory())  continue; 로 하셔도 상관없어요..

단지 이름 겹치는 것도 있을 수 있으니,
이왕이면 만들어서 경로에 맞춰 풀어 주는게 깔끔할겁니다.
...