Android解压ZIP文件
<uses-permissionandroid:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
工具类:
- public class ZIP {
- public ZIP(){
- }
- /**
- * DeCompress the ZIP to the path
- * @param zipFileString name of ZIP
- * @param outPathString path to be unZIP
- * @throws Exception
- */
- public static void UnZipFolder(String zipFileString, String outPathString) throws Exception {
- ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));
- 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);
- File folder = new File(outPathString + File.separator + szName);
- folder.mkdirs();
- } else {
- File file = new File(outPathString + File.separator + szName);
- file.createNewFile();
- // get the output stream of the file
- FileOutputStream out = new 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();
- }
- }
- inZip.close();
- }
- /**
- * Compress file and folder
- * @param srcFileString file or folder to be Compress
- * @param zipFileString the path name of result ZIP
- * @throws Exception
- */
- public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {
- //create ZIP
- ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));
- //create the file
- File file = new File(srcFileString);
- //compress
- ZipFiles(file.getParent()+File.separator, file.getName(), outZip);
- //finish and close
- outZip.finish();
- outZip.close();
- }
- /**
- * compress files
- * @param folderString
- * @param fileString
- * @param zipOutputSteam
- * @throws Exception
- */
- private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam)throws Exception{
- if(zipOutputSteam == null)
- return;
- File file = new File(folderString+fileString);
- if (file.isFile()) {
- ZipEntry zipEntry = new ZipEntry(fileString);
- FileInputStream inputStream = new FileInputStream(file);
- zipOutputSteam.putNextEntry(zipEntry);
- int len;
- byte[] buffer = new byte[4096];
- while((len=inputStream.read(buffer)) != -1)
- {
- zipOutputSteam.write(buffer, 0, len);
- }
- zipOutputSteam.closeEntry();
- }
- else {
- //folder
- String fileList[] = file.list();
- //no child file and compress
- if (fileList.length <= 0) {
- ZipEntry zipEntry = new ZipEntry(fileString+File.separator);
- zipOutputSteam.putNextEntry(zipEntry);
- zipOutputSteam.closeEntry();
- }
- //child files and recursion
- for (int i = 0; i < fileList.length; i++) {
- ZipFiles(folderString, fileString+java.io.File.separator+fileList[i], zipOutputSteam);
- }//end of for
- }
- }
- /**
- * return the InputStream of file in the ZIP
- * @param zipFileString name of ZIP
- * @param fileString name of file in the ZIP
- * @return InputStream
- * @throws Exception
- */
- public static InputStream UpZip(String zipFileString, String fileString)throws Exception {
- ZipFile zipFile = new ZipFile(zipFileString);
- ZipEntry zipEntry = zipFile.getEntry(fileString);
- return zipFile.getInputStream(zipEntry);
- }
- /**
- * return files list(file and folder) in the ZIP
- * @param zipFileString ZIP name
- * @param bContainFolder contain folder or not
- * @param bContainFile contain file or not
- * @return
- * @throws Exception
- */
- public static List<File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {
- List<File> fileList = new ArrayList<File>();
- ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));
- 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);
- File folder = new File(szName);
- if (bContainFolder) {
- fileList.add(folder);
- }
- } else {
- File file = new File(szName);
- if (bContainFile) {
- fileList.add(file);
- }
- }
- }
- inZip.close();
- return fileList;
- }
- }
4、如何自学Android, 教大家玩爆Android(成为大神必看)
5、2016 Google hosts 持续更新【更新 于:2016-08-27】(免费翻墙必备)
8、Android Studio 2.2 正式起航(玩爆Android Studio 2.2必备)
9、Android Studio 2.3 正式起航(玩爆Android Studio 2.3必备)
Android Studio 2.2 新功能实例代码:
Android Studio 2.2新功能实例源码(玩爆Android Studio 2.2必备)
Android Studio 2.2新功能介绍:
What's new in Android development tools - Google I/O 2016(YouTube视频需要自备梯子)
【GitHub】https://github.com/xiaole0310
【****博客】http://blog.****.net/xiaole0313
【新浪微博】http://weibo.com/xiaole0313
【知乎】http://www.zhihu.com/people/yang-shou-le
【简书】http://www.jianshu.com/users/1a47e8afa34a
【技术群】279126311 [满]
【技术群】484572225 [未]
【Email】[email protected]
Android Studio 2.2 新功能实例代码:
Android Studio 2.2新功能实例源码(玩爆Android Studio 2.2必备)
如果你有好的文章想和大家分享,欢迎投稿,直接向我投递文章链接即可。
欢迎扫描关注我们的微信公众号(ysle_0313),不要错过每一篇干货~