- 浏览: 153992 次
- 性别:
- 来自: 五指山
文章分类
最新评论
-
dengdonglin888:
qq_30221445 写道你好 请问这种数据能解吗 < ...
Simple XML -
qq_30221445:
你好 请问这种数据能解吗 <request> ...
Simple XML -
画个逗号给明天qu:
画个逗号给明天qu 写道
Android上传文件到服务器 -
画个逗号给明天qu:
...
Android上传文件到服务器 -
alranger:
我在jsp页面加上这一段代码后,问题还是存在。
解决Ext在ie9报错:不支持extjs对象的“createContextualFragment属性或方法”
在Android中我们很多时候需要进行压缩与解压缩,就如本人的[ 足球即时比分 ]应用中也用到过.需要将一些信息进行收集再进行压缩,最后将压缩文件上传到服务器中(如何上传将文件上传到服务器中可以看我另一篇博文 :[ Android上传文件到服务器 ]).
以下我的使用到的工具类的代码.需要注意的是,进行压缩与解压缩都不支持中文名,如果需要支持中文名的话,一般是使用 Ant中的ZipInputStream与ZipOutStream,由于手机上使用ant的jar包的话,会令应用或游戏的大小变大很多,所以尽量小引入其它第三方的jar包的.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
package rbase.app.nowscore.util; import java.io.InputStream; /** * Android Zip压缩解压缩 * @author ronald (www.r-base.net) */ public final class ZipUtil { private ZipUtil(){ } /** * 取得压缩包中的 文件列表(文件夹,文件自选) * @param zipFileString 压缩包名字 * @param bContainFolder 是否包括 文件夹 * @param bContainFile 是否包括 文件 * @return * @throws Exception */ public static java.util.List<java.io.File> getFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception { java.util.List<java.io.File> fileList = new java.util.ArrayList<java.io.File>(); 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(szName); if (bContainFolder) { fileList.add(folder); } } else { java.io.File file = new java.io.File(szName); if (bContainFile) { fileList.add(file); } } }//end of while inZip.close(); return fileList; } /** * 返回压缩包中的文件InputStream * * @param zipFilePath 压缩文件的名字 * @param fileString 解压文件的名字 * @return InputStream * @throws Exception */ public static java.io.InputStream upZip(String zipFilePath, String fileString)throws Exception { java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(zipFilePath); java.util.zip.ZipEntry zipEntry = zipFile.getEntry(fileString); return zipFile.getInputStream(zipEntry); } /** * 解压一个压缩文档 到指定位置 * @param zipFileString 压缩包的名字 * @param outPathString 指定的路径 * @throws Exception */ public static void unZipFolder(InputStream input, String outPathString)throws Exception { java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(input); java.util.zip.ZipEntry zipEntry = null; 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(); } /** * 解压一个压缩文档 到指定位置 * @param zipFileString 压缩包的名字 * @param outPathString 指定的路径 * @throws Exception */ public static void unZipFolder(String zipFileString, String outPathString)throws Exception { unZipFolder(new java.io.FileInputStream(zipFileString),outPathString); }//end of func /** * 压缩文件,文件夹 * * @param srcFilePath 要压缩的文件/文件夹名字 * @param zipFilePath 指定压缩的目的和名字 * @throws Exception */ public static void zipFolder(String srcFilePath, String zipFilePath)throws Exception { //创建Zip包 java.util.zip.ZipOutputStream outZip = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(zipFilePath)); //打开要输出的文件 java.io.File file = new java.io.File(srcFilePath); //压缩 zipFiles(file.getParent()+java.io.File.separator, file.getName(), outZip); //完成,关闭 outZip.finish(); outZip.close(); }//end of func /** * 压缩文件 * @param folderPath * @param filePath * @param zipOut * @throws Exception */ private static void zipFiles(String folderPath, String filePath, java.util.zip.ZipOutputStream zipOut)throws Exception{ if(zipOut == null){ return; } java.io.File file = new java.io.File(folderPath+filePath); //判断是不是文件 if (file.isFile()) { java.util.zip.ZipEntry zipEntry = new java.util.zip.ZipEntry(filePath); java.io.FileInputStream inputStream = new java.io.FileInputStream(file); zipOut.putNextEntry(zipEntry); int len; byte[] buffer = new byte[4096]; while((len=inputStream.read(buffer)) != -1) { zipOut.write(buffer, 0, len); } zipOut.closeEntry(); } else { //文件夹的方式,获取文件夹下的子文件 String fileList[] = file.list(); //如果没有子文件, 则添加进去即可 if (fileList.length <= 0) { java.util.zip.ZipEntry zipEntry = new java.util.zip.ZipEntry(filePath+java.io.File.separator); zipOut.putNextEntry(zipEntry); zipOut.closeEntry(); } //如果有子文件, 遍历子文件 for (int i = 0; i < fileList.length; i++) { zipFiles(folderPath, filePath+java.io.File.separator+fileList[i], zipOut); }//end of for }//end of if }//end of func } |
文件下载 : ZipUtil.java.zip
转载请注明转自 : http://www.r-base.net/archives/404
发表评论
-
xUtils简介
2014-11-25 10:04 871xUtils 包含了很多实用的android工具。 xU ... -
直接拿来用!最火的Android开源项目
2014-07-25 11:01 718转 http://www.admin10000.com/d ... -
Android APK反编译详解(附图)
2014-03-28 10:56 844http://blog.csdn.net/ithomer/ar ... -
小米人
2014-02-17 17:23 707http://www.xiaomiren.net/ -
android开发之gallery 兑现滚动一张且短距离滑动实现滚动
2013-07-02 15:28 687http://www.myexception.cn/andro ... -
TextView显示插入的图片
2013-07-01 11:29 731http://orgcent.com/android-text ... -
TextView使用SpannableString设置复合文本
2013-07-01 11:29 674http://orgcent.com/android-text ... -
转:::Android TextView文字横向自动滚动(跑马灯)
2013-06-17 11:45 1530TextView实现文字滚动需要以下几个要点: 1.文字长度长 ... -
相片滤镜开源
2013-04-27 15:01 759https://github.com/daizhenjun/I ... -
android图片特效处理之模糊效果
2013-04-27 14:57 855http://blog.csdn.net/sjf0115/ar ... -
android图片处理方法(不断收集中)
2013-04-27 14:57 583http://gundumw100.iteye.com/blo ... -
Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
2013-04-27 14:56 690http://www.cnblogs.com/daizhj/a ... -
移动云存储平台
2013-04-25 16:13 921http://bmob.cn 关于Bmob 对于很多 ... -
android ExpandableListView简单应用及listview模拟ExpandableListView
2013-02-28 11:45 708http://blog.csdn.net/jj120522/a ... -
android_App集成支付宝
2013-02-28 11:43 810http://www.cnblogs.com/qianxude ... -
Android Pull Refresh View 插件
2012-12-01 12:43 874Android Pull Refresh View htt ... -
Android-TelephoneManager(转载)
2012-10-09 22:08 1380好文章齐分享。原文地址:http://blog.si ... -
android 开源 listview separato
2012-08-27 22:51 683http://code.google.com/p/androi ... -
fragment开源项目 学习
2012-08-13 12:02 954https://github.com/tisa007/Andr ... -
Fragment学习
2012-08-13 11:53 695http://www.eoeandroid.com/threa ...
相关推荐
本示例“androidstudio视频文件压缩Demo”提供了一个详细的解决方案,它演示了如何在Android Studio项目中实现视频文件的压缩,并且还带有进度条反馈,让用户能够了解压缩过程的实时状态。以下是对这个Demo的深入...
4. **解压缩文件**:另一个关键方法可能是`unzipToDir()`,它接收一个ZIP文件路径和目标解压缩目录。`ZipInputStream`可以从ZIP文件中读取每个条目(entry),然后用`FileOutputStream`将内容写入目标目录。 5. **...
Android解压缩文件。Android原生的解压缩文件,使用时提供保存的路径即可
在Android环境中,通过JNI调用libzip库可以实现原生层对ZIP文件的操作,这在处理大量数据或者需要高效读取压缩文件的场景下非常有用。 首先,你需要在Android项目的jniLibs目录下添加libzip库的.so文件,确保它们...
>可用作APK字体压缩 用于提取仅需要的美化文字,来压缩assets下的字体文件大小。 Download FontZip.jar FontZip32.exe FontZip64.exe 历史版本和其他下载链 Gif FontZip2 使用说明: Windows下运行run.bat,选...
在Android平台上,对zip文件进行压缩和解压是常见...理解这些工具的使用和工作原理,对于开发者来说,是实现文件压缩和解压功能的基础。在实际开发中,要结合项目需求,合理选择并优化相关操作,以提供更好的用户体验。
在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...
在Android开发中,处理压缩文件是一项常见的任务,尤其是在下载、更新或者备份数据时。然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章...
1. **文件压缩(CompressFile)**:这个功能允许开发者将大型文件压缩为更小的尺寸,以节省存储空间和网络传输时间。它可能采用常见的压缩算法如Gzip或Zip,通过读取文件内容,将其编码并写入新的压缩文件中。压缩...
在Android平台上进行本地视频压缩是一项常见的任务,尤其在开发视频编辑应用时,高效且占用空间小的压缩技术显得尤为重要。本篇文章将详细讲解如何利用Android的API和其他第三方库,如CommonVideoLibrary,来实现这...
http://blog.csdn.net/oLimxing/article/details/50788014 质量压缩相关文章 欢迎访问博主github:https://github.com/limxing 欢迎点星
在Android中,我们经常需要对文件或目录进行压缩,以减少存储空间或便于传输。Android SDK提供了java.util.zip包,其中的ZipOutputStream类可以帮助我们完成这个任务。首先,我们需要创建一个ZipOutputStream对象,...
在Android平台上,视频压缩是一项重要的任务,特别是在移动设备上,因为有限的存储空间和网络带宽使得高效的数据处理成为必需。本节将深入探讨如何在Android应用中实现视频压缩,从相册选取视频并将其压缩至360k,...
首先,创建一个`ZipInputStream`,传入下载好的压缩文件的输入流。然后,遍历`ZipInputStream`,每次读取一个`ZipEntry`,创建对应的`FileOutputStream`,并将`ZipInputStream`的数据写入到新的文件。 6. **指定...
在Android应用开发中,图片加载是常见的操作,但由于图片文件大小不一,如果处理不当,可能会导致内存溢出(OOM)或应用程序无响应(ANR)等问题。本解决方案旨在探讨如何有效压缩Android中的图片,避免ANR现象,...
ZIP是一种广泛使用的文件压缩格式,它可以将多个文件或目录打包成一个单一的文件,方便存储和传输。ZIP文件内部包含了一个或多个经过压缩的数据块,每个数据块对应原始文件的一部分。 2. **Android API支持** ...
通过调用UnzipUtils下面的UnzipUtils.createFile(locationZip);UnzipUtils.copyBigDataToSD(MainActivity.this, locationZip, ZIP_NAME);UnzipUtils.upZipFile(new File(locationZip)...
《Android视频压缩技术详解——VideoCompressor工具包的运用与实践》 在移动应用开发领域,尤其是涉及到多媒体内容分享的应用,视频压缩是一项至关重要的技术。本文将深入探讨Android平台上的视频压缩工具包——...
Luban(鲁班)——Android图片压缩工具,仿微信朋友圈压缩策略。项目描述目前做app开发总绕不开图片这个元素。但是随着手机拍照分辨率的提升,图片的压缩成为一个很重要的问题。单纯对图片进行裁切,压缩已经有很多...
以上就是从相册选取视频、压缩视频并上传到服务器的Android开发中涉及的主要知识点,涵盖了多媒体文件访问、解码、压缩、网络传输等多个方面。在实际开发中,要根据具体需求和平台特性进行适当调整和优化。