当前位置: 首页 > news >正文

网站建设和网页设计视频教程图文排版模板

网站建设和网页设计视频教程,图文排版模板,建设工程合同协议书,临沭县住房和城乡建设局网站原文#xff1a;http://www.cnblogs.com/visec479/p/4112881.html#3069573Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术#xff0c;可以对单个文件和任意级联文件夹进行压缩和解压#xff0c;对于一些初学者来说是个很不错的实例。zip扮演着归档和压缩两…原文http://www.cnblogs.com/visec479/p/4112881.html#3069573Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术可以对单个文件和任意级联文件夹进行压缩和解压对于一些初学者来说是个很不错的实例。zip扮演着归档和压缩两个角色gzip并不将文件归档仅只是对单个文件进行压缩所以在UNIX平台上命令tar通常用来创建一个档案文件然后命令gzip来将档案文件压缩。Java I/O类库还收录了一些能读写压缩格式流的类。要想提供压缩功能只要把它们包在已有的I/O类的外面就行了。这些类不是Reader和Writer而是InputStream和OutStreamput的子类。这是因为压缩算法是针对byte而不是字符的。相关类与接口Checksum 接口被类Adler32和CRC32实现的接口Adler32 使用Alder32算法来计算Checksum数目CRC32 使用CRC32算法来计算Checksum数目CheckedInputStream InputStream派生类可得到输入流的校验和Checksum用于校验数据的完整性CheckedOutputStream OutputStream派生类可得到输出流的校验和Checksum 用于校验数据的完整性DeflaterOutputStream 压缩类的基类。ZipOutputStream DeflaterOutputStream的一个子类把数据压缩成Zip文件格式。GZIPOutputStream DeflaterOutputStream的一个子类把数据压缩成GZip文件格式InflaterInputStream 解压缩类的基类ZipInputStream InflaterInputStream的一个子类能解压缩Zip格式的数据GZIPInputStream InflaterInputStream的一个子类能解压缩Zip格式的数据ZipEntry 类表示 ZIP 文件条目ZipFile 类此类用于从 ZIP 文件读取条目使用ZIP对多个文件进行压缩与解压Java对Zip格式类库支持得比较全面得用它可以把多个文件压缩成一个压缩包。这个类库使用的是标准Zip格式所以能与很多的压缩工具兼容。ZipOutputStream类有设置压缩方法以及在压缩方式下使用的压缩级别zipOutputStream.setMethod(int method)设置用于条目的默认压缩方法。只要没有为单个 ZIP 文件条目指定压缩方法就使用ZipOutputStream所设置的压缩方法来存储默认值为 ZipOutputStream.DEFLATED(表示进行压缩存储)还可以设置成STORED(表示仅打包归档存储)。ZipOutputStream在设置了压缩方法为DEFLATED后我们还可以进一步使用setLevel(int level)方法来设置压缩级别压缩级别值为0-9共10个级别(值越大表示压缩越利害)默认为Deflater.DEFAULT_COMPRESSION-1。当然我们也可以通过条目ZipEntry的setMethod方法为单个条件设置压缩方法。类ZipEntry描述了存储在ZIP文件中的压缩文件。类中包含有多种方法可以用来设置和获得ZIP条目的信息。类ZipEntry是被ZipFile[zipFile.getInputStream(ZipEntry entry)]和ZipInputStream使用来读取ZIP文件ZipOutputStream来写入ZIP文件的。有以下这些有用的方法getName()返回条目名称、isDirectory()如果为目录条目则返回 true(目录条目定义为其名称以 / 结尾的条目)、setMethod(int method) 设置条目的压缩方法可以为 ZipOutputStream.STORED 或 ZipOutputStream .DEFLATED。下面实例我们使用了apache的zip工具包(所在包为ant.jar )因为java类型自带的不支持中文路径不过两者使用的方式是一样的只是apache压缩工具多了设置编码方式的接口其他基本上是一样的。另外如果使用org.apache.tools.zip.ZipOutputStream来压缩的话我们只能使用org.apache.tools.zip.ZipEntry来解压而不能使用java.util.zip.ZipInputStream来解压读取了当然apache并未提供ZipInputStream类。文件压缩package gizAction;import java.io.*;import java.util.zip.*;/*** author Dana·Li* * 程序实现了ZIP压缩[compression]* * 大致功能包括用了多态递归等JAVA核心技术可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。* * 在本段代码中实现的是压缩部分*/public class ZipCompressing {private int k 1; // 定义递归次数变量private void zip(String zipFileName, File inputFile) throws Exception {System.out.println(压缩中...);ZipOutputStream out new ZipOutputStream(new FileOutputStream(zipFileName));BufferedOutputStream bo new BufferedOutputStream(out);zip(out, inputFile, inputFile.getName(), bo);bo.close();out.close(); // 输出流关闭System.out.println(压缩完成);}private void zip(ZipOutputStream out, File f, String base,BufferedOutputStream bo) throws Exception { // 方法重载if (f.isDirectory()){File[] fl f.listFiles();if (fl.length 0){out.putNextEntry(new ZipEntry(base /)); // 创建zip压缩进入点baseSystem.out.println(base /);}for (int i 0; i fl.length; i) {zip(out, fl[i], base / fl[i].getName(), bo); // 递归遍历子文件夹}System.out.println(第 k 次递归);k;} else {out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点baseSystem.out.println(base);FileInputStream in new FileInputStream(f);BufferedInputStream bi new BufferedInputStream(in);int b;while ((b bi.read()) ! -1) {bo.write(b); // 将字节流写入当前zip目录}bi.close();in.close(); // 输入流关闭}}/*** 测试* param args*/public static void main(String[] args) {ZipCompressing book new ZipCompressing();try {book.zip(F:\\ziptest.zip,new File(F:\\ziptest));} catch (Exception e) {e.printStackTrace();}}}文件解压package gizAction;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;/*** author Dana·Li* * 程序实现了ZIP解压[decompression]* * 大致功能包括用了多态递归等JAVA核心技术可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。* * 在本段代码中实现的是解压部分*/public class zipDecompressing {public static void main(String[] args) {// TODO Auto-generated method stublong startTimeSystem.currentTimeMillis();try {ZipInputStream Zinnew ZipInputStream(new FileInputStream(F:\\ziptest.zip));//输入源zip路径BufferedInputStream Binnew BufferedInputStream(Zin);String ParentF:\\ziptest\\; //输出路径(文件夹目录)File Foutnull;ZipEntry entry;try {while((entry Zin.getNextEntry())!null !entry.isDirectory()){Foutnew File(Parent,entry.getName());if(!Fout.exists()){(new File(Fout.getParent())).mkdirs();}FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);int b;while((bBin.read())!-1){Bout.write(b);}Bout.close();out.close();System.out.println(Fout解压成功);}Bin.close();Zin.close();} catch (IOException e) {e.printStackTrace();}} catch (FileNotFoundException e) {e.printStackTrace();}long endTimeSystem.currentTimeMillis();System.out.println(耗费时间 (endTime-startTime) ms);}}用GZIP进行对单个文件压缩GZIP的接口比较简单因此如果你只需对一个流进行压缩的话可以使用它。当然它可以压缩字符流与可以压缩字节流下面是一个对GBK编码格式的文本文件进行压缩的。压缩类的用法非常简单只要用GZIPOutputStream 或ZipOutputStream把输出流包起来再用GZIPInputStream 或ZipInputStream把输入流包起来就行了。剩下的都是些普通的I/O操作。import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class GZIPcompress {public static void main(String[] args) throws IOException {//做准备压缩一个字符文件注这里的字符文件要是GBK编码方式的BufferedReader in new BufferedReader(new InputStreamReader(new FileInputStream(e:/tmp/source.txt), GBK));//使用GZIPOutputStream包装OutputStream流使其具体压缩特性最后会生成test.txt.gz压缩包//并且里面有一个名为test.txt的文件BufferedOutputStream out new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(test.txt.gz)));System.out.println(开始写压缩文件...);int c;while ((c in.read()) ! -1) {/** 注这里是压缩一个字符文件前面是以字符流来读的不能直接存入c因为c已是Unicode* 码这样会丢掉信息的(当然本身编码格式就不对)所以这里要以GBK来解后再存入。*/out.write(String.valueOf((char) c).getBytes(GBK));}in.close();out.close();System.out.println(开始读压缩文件...);//使用GZIPInputStream包装InputStream流使其具有解压特性BufferedReader in2 new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(test.txt.gz)), GBK));String s;//读取压缩文件里的内容while ((s in2.readLine()) ! null) {System.out.println(s);}in2.close();}}
http://www.sadfv.cn/news/228289/

相关文章:

  • 全国网站集约化建设试点2核4G服务器wordpress
  • 织梦手机网站怎么做搜索引擎优化关键词选择的方法有哪些
  • 通州微网站优化湖南网站建设案例
  • 房地产论坛网站建设搭建网站用服务器还是虚拟主机
  • 兰州做网站优化西安网页设计培训班
  • 安论坛网站建设品牌升级策略
  • 免费的自建视频网站网站哪家公司做的好
  • 网站建设的步骤过程文库公司网络营销方案思路
  • 网站推广效果分析网站页面设计怎么收费
  • 手机网站制作公司 广州龙岩市住房和城乡建设厅网站
  • 梅州市做试块网站高端人士
  • 手机如何建立网站步骤网站建设夬金手指排名壹陆
  • 福田网站建设龙岗网站建设河南信阳网站建设公司电话
  • 一键制作网站汕头seo关键词排名
  • 新泰网站制作公司学校网站建设价格
  • 注册网站会有哪些风险怎么给一个网站做推广
  • 外贸可以什么网站做网站中所有标签
  • 网站做装修效果图推进门户网站建设
  • 关于校园网站升级建设的报告如何做网站管理维护
  • php 做视频网站网络营销实验报告
  • 网站怎么进入网站开发流程ppt
  • 用html5做的美食网站十大购物app排行榜
  • 凡科做网站的方法怎样做QQ网站呢
  • 网站建设规划与管理 试卷什么是百度快照
  • 哪个网站做非洲的生意最新wordpress漏洞
  • ps软件下载电脑版要钱吗偷的网站怎么做seo
  • 柳州洛维建设网站赣州网站建设
  • 姜堰区网站建设wordpress文章编辑器可视化
  • 网站的功能互联网产品推广是做什么的
  • 养殖舍建设网站山西太原百度公司