Android 解压zip文件
16lz
2021-01-23
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);String zipFileStr="/mnt/sdcard/AndroidUnzip.zip"; //设置Zip文件路径String targetDir=zipFileStr.substring(0, zipFileStr.length()-4); //设置解压目标文件夹File file=new File(zipFileStr);File dirfile=new File(targetDir);if(!dirfile.exists()){dirfile.mkdirs();}if(file.length()!=0){Log.v("Android Unzip", "Start");try {UnZipFolder(zipFileStr,targetDir);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Log.v("Android Unzip", "End");}else{Log.v("Android Unzip","File not exist");}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public static void UnZipFolder(String zipFileString, String outPathString)throws Exception { android.util.Log.v("XZip", "UnZipFolder(String, String)"); java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString)); java.util.zip.ZipEntry zipEntry; String szName = ""; while ((zipEntry = inZip.getNextEntry()) != null) { szName = zipEntry.getName(); if (zipEntry.isDirectory()) { // get the folder name of the widget szName = szName.substring(0, szName.length() - 1); java.io.File folder = new java.io.File(outPathString + java.io.File.separator + szName); folder.mkdirs(); } else { java.io.File file = new java.io.File(outPathString + java.io.File.separator + szName); file.createNewFile(); // get the output stream of the file java.io.FileOutputStream out = new java.io.FileOutputStream(file); int len; byte[] buffer = new byte[1024]; // read (len) bytes into buffer while ((len = inZip.read(buffer)) != -1) { // write (len) byte from buffer at the position 0 out.write(buffer, 0, len); out.flush(); } out.close(); } }//end of while inZip.close(); }//end of func
添加许可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
更多相关文章
- Android创建文件夹及文件并写入数据
- 读取android根目录下的文件或文件夹
- Android 功耗优化(5)---Android O 的Doze模式白名单路径
- 如何正确获得Android内外SD卡路径
- android存储路径问题
- Android native/C/C++ 监控文件夹变化
- Android中资源文件夹res/raw和assets的使用
- Android的支持库 && app/apk包进系统 && 预置so库进系统 && 预置
- Android Studio 3.2.2- Android SDK 安装包报错 无法 安装 路径