android复制assets里的压缩文件到sdcard里并解压

[java]  view plain  copy
 print ?
  1. private static String DB_PATH = android.os.Environment  
  2.         .getExternalStorageDirectory().getAbsolutePath() + "/";  
  3. private static String DB_NAME = "hello.zip";  
  4. private static final int ASSETS_SUFFIX_BEGIN = 101;  
  5. private static final int ASSETS_SUFFIX_END = 102;  
  6. private static String ASSETS_NAME = "hello.zip";  


1、复制(大于1M 需要用文件分割器分割)

[java]  view plain  copy
 print ?
  1. private void copyBigDataBase() throws IOException {  
  2.         InputStream myInput;  
  3.         String outFileName = DB_PATH + DB_NAME;  
  4.         OutputStream myOutput = new FileOutputStream(outFileName);  
  5.         for (int i = ASSETS_SUFFIX_BEGIN; i < ASSETS_SUFFIX_END + 1; i++) {  
  6.             myInput = this.getAssets().open(ASSETS_NAME + "." + i);  
  7.             byte[] buffer = new byte[1024];  
  8.             int length;  
  9.             while ((length = myInput.read(buffer)) > 0) {  
  10.                 myOutput.write(buffer, 0, length);  
  11.             }  
  12.             myOutput.flush();  
  13.             myInput.close();  
  14.         }  
  15.         myOutput.close();  
  16.     }  

2、解压缩(有一级单个目录)

[java]  view plain  copy
 print ?
  1. public void unzipFile(String targetPath, String zipFilePath) {  
  2.   
  3.       try {  
  4.           File zipFile = new File(zipFilePath);  
  5.           InputStream is = new FileInputStream(zipFile);  
  6.           ZipInputStream zis = new ZipInputStream(is);  
  7.           ZipEntry entry = null;  
  8.           System.out.println("开始解压:" + zipFile.getName() + "...");  
  9.           while ((entry = zis.getNextEntry()) != null) {  
  10.               String zipPath = entry.getName();  
  11.               try {  
  12.   
  13.                   if (entry.isDirectory()) {  
  14.                       File zipFolder = new File(targetPath + File.separator  
  15.                               + zipPath);  
  16.                       if (!zipFolder.exists()) {  
  17.                           zipFolder.mkdirs();  
  18.                       }  
  19.                   } else {  
  20.                       File file = new File(targetPath + File.separator  
  21.                               + zipPath);  
  22.                       if (!file.exists()) {  
  23.                           File pathDir = file.getParentFile();  
  24.                           pathDir.mkdirs();  
  25.                           file.createNewFile();  
  26.                       }  
  27.   
  28.                       FileOutputStream fos = new FileOutputStream(file);  
  29.                       int bread;  
  30.                       while ((bread = zis.read()) != -1) {  
  31.                           fos.write(bread);  
  32.                       }  
  33.                       fos.close();  
  34.   
  35.                   }  
  36.                   System.out.println("成功解压:" + zipPath);  
  37.   
  38.               } catch (Exception e) {  
  39.                   System.out.println("解压" + zipPath + "失败");  
  40.                   continue;  
  41.               }  
  42.           }  
  43.           zis.close();  
  44.           is.close();  
  45.           System.out.println("解压结束");  
  46.       } catch (Exception e) {  
  47.           e.printStackTrace();  
  48.       }  
  49.   
  50.   }  


参考资料:

【android】assert目录下文件的大小限制 http://www.cnblogs.com/Amandaliu/archive/2011/08/22/2149803.html

Android Zip文件解压缩代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值