package cn.tzz.zip; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtils { /** * 文件压缩(支持一次压缩多个文件,文件存放至一个文件夹中) * 中文名乱码,采用Apache的zip包可解决 */ public static void ZipFile(String filepath ,String zippath) { try { File file = new File(filepath);// 要被压缩的文件夹 File zipFile = new File(zippath); InputStream input = null; ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile)); if(file.isDirectory()){//压缩文件夹 File[] files = file.listFiles(); for(int i = 0; i < files.length; ++i){ input = new FileInputStream(files[i]); zipOut.putNextEntry(new ZipEntry(file.getName() + File.separator + files[i].getName())); int temp = 0; while((temp = input.read()) != -1){ zipOut.write(temp); } input.close(); } zipOut.close(); }else{//压缩单个文件 input = new FileInputStream(file); String fileName = new String(file.getName().getBytes(), "UTF-8"); zipOut.putNextEntry(new ZipEntry(fileName)); int temp = 0; while((temp = input.read()) != -1){ zipOut.write(temp); } input.close(); zipOut.close(); } zipOut.close(); } catch (Exception e) { e.printStackTrace(); } } /** 解压缩(解压缩单个文件)*/ public static void ZipContraFile(String zippath ,String outfilepath ,String filename) { try { File file = new File(zippath);//压缩文件路径和文件名 File outFile = new File(outfilepath);//解压后路径和文件名 ZipFile zipFile = new ZipFile(file); ZipEntry entry = zipFile.getEntry(filename);//所解压的文件名 InputStream input = zipFile.getInputStream(entry); OutputStream output = new FileOutputStream(outFile); int temp = 0; while((temp = input.read()) != -1){ output.write(temp); } input.close(); output.close(); } catch (Exception e) { e.printStackTrace(); } } /** 解压缩(压缩文件中包含多个文件)可代替上面的方法使用。 * ZipInputStream类 * 当我们需要解压缩多个文件的时候,ZipEntry就无法使用了, * 如果想操作更加复杂的压缩文件,我们就必须使用ZipInputStream类 * */ public static void ZipContraMultiFile(String zippath ,String outzippath){ try { File file = new File(zippath); File outFile = null; ZipFile zipFile = new ZipFile(file); ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file)); ZipEntry entry = null; InputStream input = null; OutputStream output = null; while((entry = zipInput.getNextEntry()) != null){ System.out.println("解压缩" + entry.getName() + "文件"); outFile = new File(outzippath + File.separator + entry.getName()); if(!outFile.getParentFile().exists()){ outFile.getParentFile().mkdir(); } if(!outFile.exists()){ outFile.createNewFile(); } input = zipFile.getInputStream(entry); output = new FileOutputStream(outFile); int temp = 0; while((temp = input.read()) != -1){ output.write(temp); } input.close(); output.close(); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { ZipFile("E:/zip/中文名.txt", "E:/zip/压缩单个文件.zip"); ZipFile("E:/zip", "E:/压缩多个文件.zip"); ZipContraFile("E:/zip/压缩单个文件.zip","E:/zip/解压文件.txt", "1.txt"); ZipContraMultiFile("E:/压缩多个文件.zip","E:/zip2"); System.out.println("********执行成功**********"); } }
相关推荐
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
java 文件zip 压缩与解压 可以直接调用
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
使用 Java 语言实现并封装的创建 ZIP 格式的压缩文件并解压到指定目录和解压 ZIP 文件到指定目录的工具类。
Java实现的带密码压缩与解压zip文件源码,可将多个文件使用不同的密码压进同一个zip文件;可以解压带密码的zip文件(store压缩模式)
java实现的解压与压缩的类 其中有zip和rar类型的 还包括了所需的架包
java 操作Zip文件(压缩、解压、加密) zip4j-1.3.2.jar ant-1.10.6.jar
JAVA实现目录及文件的zip压缩和解压
java版本的zip压缩和解压程序,命令行的,没有界面,支持文件夹压缩解压
对zip文件进行解压缩工具类,以及jar包
java压缩解压ZIP
包含了使用的jar包,以及一个Java类,实现了使用Java对多目录多层级的文件进行打包,以及对ZIP包进行解压缩的操作。
关于Java实现文件的zip的解压缩 文本文档 虽然不多
java zip 压缩解压例子
Java带密码压缩zip与解压文件源码源码整理
zip文件压缩/解压源码,根据网上的部分代码进行重写,更方便使用
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
该工具支持zip的压缩和解压 1 1
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压