Android中文件的压缩和解压缩实例代码
使用场景
当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行压缩.又如当我们需要从服务器中下载文件时,如果下载源文件耗时又消耗流量,较大文件需要压缩,可以使得传输效率大大提高.下面我们就学习下基本的文件压缩和解压缩.Java中提供了压缩和解压缩的输入输出流
publicstaticvoidzip(Stringsrc,Stringdest)throwsIOException{ //定义压缩输出流 ZipOutputStreamout=null; try{ //传入源文件 FileoutFile=newFile(dest); FilefileOrDirectory=newFile(src); //传入压缩输出流 out=newZipOutputStream(newFileOutputStream(outFile)); //判断是否是一个文件或目录 //如果是文件则压缩 if(fileOrDirectory.isFile()){ zipFileOrDirectory(out,fileOrDirectory,""); }else{ //否则列出目录中的所有文件递归进行压缩 File[]entries=fileOrDirectory.listFiles(); for(inti=0;i上述代码存在问题,若文件压缩后仍然很大怎么办,换句话说文件压缩率低也是问题,java中也专门对Linux提供了高压缩率的输入输出流,其使用方法和上述代码相似.高压缩率输入输出流:(GZIPInputStream和GZIPOutputStream)
文件压缩
publicstaticvoidzip(FilesrcFile,FiledesFile)throwsIOException{ GZIPOutputStreamzos=null; FileInputStreamfis=null; try{ //创建压缩输出流,将目标文件传入 zos=newGZIPOutputStream(newFileOutputStream(desFile)); //创建文件输入流,将源文件传入 fis=newFileInputStream(srcFile); byte[]buffer=newbyte[1024]; intlen=-1; //利用IO流写入写出的形式将源文件写入到目标文件中进行压缩 while((len=(fis.read(buffer)))!=-1){ zos.write(buffer,0,len); } }finally{ close(zos); close(fis); } }文件解压缩
publicstaticvoidunZip(FilesrcFile,FiledesFile)throwsIOException{ GZIPInputStreamzis=null; FileOutputStreamfos=null; try{ //创建压缩输入流,传入源文件 zis=newGZIPInputStream(newFileInputStream(srcFile)); //创建文件输出流,传入目标文件 fos=newFileOutputStream(desFile); byte[]buffer=newbyte[1024]; intlen=-1; //利用IO流写入写出的形式将压缩源文件解压到目标文件中 while((len=(zis.read(buffer)))!=-1){ fos.write(buffer,0,len); } }finally{ close(zis); close(fos); } }以上所述是小编给大家介绍的Android中文件的压缩和解压缩实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!