2013-01-16 47 views
0

如何将android的资源解压缩到/ sdcard /下,我的代码在nexus7下面没有成功,但是如果它运行的除nexus7以外都会好的,将能够提取数据。如何在nexus7上解压缩代码

要运行解压缩。

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     UnZip.start(); 
    } 
}).start(); 


private Thread UnZip = new Thread() { 
      @Override 
     public void run() { 
      try { 
       final int BUFFER = 8192; 

       ZipInputStream inputStream = new ZipInputStream(getAssets().open("file.zip")); 

       for (ZipEntry entry = inputStream.getNextEntry(); entry != null; entry = inputStream 
         .getNextEntry()) { 

        String innerFileName = "/sdcard/" + File.separator 
          + entry.getName(); 
        File innerFile = new File(innerFileName); 

        if (entry.isDirectory()) { 
         innerFile.mkdirs(); 
        } else { 
         FileOutputStream outputStream = new FileOutputStream(
           innerFileName); 

         BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
           outputStream, BUFFER); 

         int count = 0; 
         byte[] data = new byte[BUFFER]; 
         while ((count = inputStream.read(data, 0, BUFFER)) != -1) { 
          bufferedOutputStream.write(data, 0, count); 
         } 

         bufferedOutputStream.flush(); 
         bufferedOutputStream.close(); 
        } 
       } 
       inputStream.closeEntry(); 
       inputStream.close(); 

        } catch (Exception e) { 

       } 
      } 
     }; 

回答

1

,而不是用这种方式

String innerFileName = "/sdcard/" + File.separator 
          + entry.getName(); 

使用环境API

String innerFileName = Environment.getExternalStorageDirectory().toString() + File.separator + entry.getName(); 
找SD卡

不要忘记将WRITE_EXTERNAL_STORAGE允许添加到您的AndroidManifest.xml

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

谢谢f或回复,但不工作,我认为在解压缩过程。我还在清单中添加了权限android.permission.WRITE_EXTERNAL_STORAGE。 –

+0

“不工作”是指什么?你遇到了什么错误? – Blackbelt