java 压缩和解压缩Zip、Jar、Gzip文件实例代码
程序员文章站
2024-03-13 17:57:33
我们经常会使用winzip等压缩软件将文件进行压缩以方便传输。在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成zip、jar、gzip...
我们经常会使用winzip等压缩软件将文件进行压缩以方便传输。在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成zip、jar、gzip等形式,gzip主要是在linux系统下的压缩文件。
下面主要讲的就是zip形式的压缩文件,而jar、gzip形式的压缩文件也是类似的用法。
zip是一种很常见的压缩形式,在java中要实现zip的压缩主要用到的是java.util.zip这个包里面的类。主要有zipfile、 zipoutputstream、zipinputstream和zipentry。zipoutputstream是用来压缩文件 的,zipinputstream和zipfile是用来解压缩文件的,在压缩和解压缩的过程中,zipentry都会用到。在java的zip压缩文件 中,每一个子文件都是一个zipentry对象。
压缩文件:
import java.io.file; import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.nio.charset.charset; import java.util.zip.zipentry; import java.util.zip.zipoutputstream; public class zipoutputstreamtest { public static void main(string args[]) throws ioexception { test1(); test2(); } public static void test1() throws ioexception { zipoutputstream zos = new zipoutputstream(new fileoutputstream("d:\\testzip.zip"), charset.forname("gbk")); //实例化一个名称为ab.txt的zipentry对象 zipentry entry = new zipentry("ab.txt"); //设置注释 zos.setcomment("zip测试for单个文件"); //把生成的zipentry对象加入到压缩文件中,而之后往压缩文件中写入的内容都会放在这个zipentry对象里面 zos.putnextentry(entry); inputstream is = new fileinputstream("d:\\ab.txt"); int len = 0; while ((len = is.read()) != -1) zos.write(len); is.close(); zos.close(); } public static void test2() throws ioexception { file infile = new file("d:\\test"); zipoutputstream zos = new zipoutputstream(new fileoutputstream("d:\\test.zip"), charset.forname("gbk")); zos.setcomment("多文件处理"); zipfile(infile, zos, ""); zos.close(); } public static void zipfile(file infile, zipoutputstream zos, string dir) throws ioexception { if (infile.isdirectory()) { file[] files = infile.listfiles(); for (file file:files) zipfile(file, zos, dir + "\\" + infile.getname()); } else { string entryname = null; if (!"".equals(dir)) entryname = dir + "\\" + infile.getname(); else entryname = infile.getname(); zipentry entry = new zipentry(entryname); zos.putnextentry(entry); inputstream is = new fileinputstream(infile); int len = 0; while ((len = is.read()) != -1) zos.write(len); is.close(); } } }
解压缩文件:
import java.io.file; import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.nio.charset.charset; import java.util.zip.zipentry; import java.util.zip.zipfile; import java.util.zip.zipinputstream; public class zipinputstreamtest { public static void main(string args[]) throws ioexception { file file = new file("d:\\test.zip");//压缩文件 zipfile zipfile = new zipfile(file);//实例化zipfile,每一个zip压缩文件都可以表示为一个zipfile //实例化一个zip压缩文件的zipinputstream对象,可以利用该类的getnextentry()方法依次拿到每一个zipentry对象 zipinputstream zipinputstream = new zipinputstream(new fileinputstream(file), charset.forname("gbk")); zipentry zipentry = null; while ((zipentry = zipinputstream.getnextentry()) != null) { string filename = zipentry.getname(); file temp = new file("d:\\unpacktest\\" + filename); if (! temp.getparentfile().exists()) temp.getparentfile().mkdirs(); outputstream os = new fileoutputstream(temp); //通过zipfile的getinputstream方法拿到具体的zipentry的输入流 inputstream is = zipfile.getinputstream(zipentry); int len = 0; while ((len = is.read()) != -1) os.write(len); os.close(); is.close(); } zipinputstream.close(); } }
以上就是对java 压缩和解压缩文件的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
上一篇: java连接MySql数据库
下一篇: mybatis实现读取树结构数据实例代码
推荐阅读
-
java 压缩和解压缩Zip、Jar、Gzip文件实例代码
-
Java解压缩zip - 解压缩多个文件或文件夹实例
-
Java实现文件压缩与解压的示例[zip格式,gzip格式]
-
Java解压缩zip - 解压缩多个文件或文件夹实例
-
Java实现文件压缩与解压的示例[zip格式,gzip格式]
-
java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
-
java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解
-
Java压缩文件ZIP实例代码
-
PHP实例代码分析:将文件夹压缩成ZIP_PHP教程
-
php生成zip压缩文件实例代码讲解_PHP教程