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

来源:互联网 发布:又拍云存储 域名 编辑:程序博客网 时间:2024/06/06 00:52
[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

http://www.cnblogs.com/som5/archive/2011/01/23/android_sqlite_assets_sdcard.html

Android中资源文件夹res/raw和assets的使用http://www.apkbus.com/android-4012-1-1.html

Android zip文件压缩解压缩
http://www.oschina.net/code/snippet_4873_4142
java中实现对zip和rar文件的解压。 
http://www.iteye.com/topic/628920
Android 解压缩 源代码
http://hi.baidu.com/%D3%DE%D6%D0%D7%F7%C0%D6/blog/item/e48eb85566990ac9b645ae2b.html

Android Zip文件解压缩代码

http://www.android123.com.cn/androidkaifa/822.html
阅读全文
0 0