2017-05-01 11 views
0

サーバーから内部ストレージにZIPファイルをダウンロードしています。ダウンロードした後、そのファイルを内部ストレージに解凍します。私のファイルは内部ストレージにダウンロードされていますが、それを見ることはできますが、解凍している間は読み込めません。以下は私のunzipfile()メソッドです。私はどこに間違っているのか誰にでも教えてくれる?Androidのアーカイブを解凍すると、内蔵ストレージに保存されます。

public void unzipfile() 
    { 
     try { 

      Log.d("unzipiing","unzipping"); 
      ContextWrapper cw = new ContextWrapper(context); 
      String name_="foldername"; //Folder name in device android/data/ 
      File directory = cw.getDir(name_, Context.MODE_PRIVATE); 
      File mypath=new File(directory,"dwnld"); 

      FileOutputStream fout = new FileOutputStream(mypath); 

      File yourFile = new File(directory,"dwnld.zip"); 
      Log.d("unzipiing","filepath -" + yourFile.getPath()); 

      FileInputStream fin = new FileInputStream(yourFile.getPath()); 
      ZipInputStream zin = new ZipInputStream(fin); 
      Log.d("unzipiing","zin size -" + zin.available()); 
      // zin.available() give -1 in console log 

      BufferedInputStream in = new BufferedInputStream(zin); 
      BufferedOutputStream out = new BufferedOutputStream(fout); 


     byte b[] = new byte[zin.available()]; 
     int n; 
      Log.d("unzip","n - " + in.read(b,0,1024)); 
     while ((n = in.read(b,0,1024)) >= 0) { 
      out.write(b,0,n); 
      Log.d("unzip byte"," - " + n); 
     } 

     out.flush(); 
     out.close(); 
      in.close(); 
      fin.close(); 
      zin.close(); 
     } 
     catch (Exception e){ 
     } 
    } 
+0

をご確認ください。代わりの解決策を試すことができます:http://stackoverflow.com/questions/3382996/how-to-unzip-files-programmatically-in-android –

+0

リンクとヘルプありがとう。その解決策を試みます。しかし、なぜこのコードがうまくいかないのか知りたいのですが:-( –

+0

しばらくあなたのコードをコメントして、次の解決策のセットに進み、無料でコードをデバッグしようとします。 –

答えて

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

解凍

public void unzip(String _zipFile, String _targetLocation) { 

      //create target location folder if not exist 
      dirChecker(_targetLocatioan); 

      try { 
       FileInputStream fin = new FileInputStream(_zipFile); 
       ZipInputStream zin = new ZipInputStream(fin); 
       ZipEntry ze = null; 
       while ((ze = zin.getNextEntry()) != null) { 

        //create dir if required while unzipping 
        if (ze.isDirectory()) { 
         dirChecker(ze.getName()); 
        } else { 
         FileOutputStream fout = new FileOutputStream(_targetLocation + ze.getName()); 
         for (int c = zin.read(); c != -1; c = zin.read()) { 
          fout.write(c); 
         } 

         zin.closeEntry(); 
         fout.close(); 
        } 

       } 
       zin.close(); 
      } catch (Exception e) { 
       System.out.println(e); 
      } 
    } 

ための使用方法この問題はまだ明らかではないされている場合、正確にパス

public void dirChecker(String filepath) 
{ 
File file = new File(filePath); 
if(file.exists())  
//Do something 
else 
// Do something else. 
} 
関連する問題