`

Java建立Zip压缩文件的代码实例

阅读更多
Java建立Zip压缩文件的代码实例
import java.io.*;
import java.util.zip.*;
class Zip {
public static void main(String args[]) throws IOException {
byte b[] = new byte[512];
ZipOutputStream zout = new ZipOutputStream(System.out);
for(int i = 0; i < args.length; i ++) {
InputStream in = new FileInputStream(args[i]);
ZipEntry e = new ZipEntry(args[i].replace(File.separatorChar,'/'));
zout.putNextEntry(e);
int len=0;
while((len=in.read(b)) != -1) {
zout.write(b,0,len);
}
zout.closeEntry();
print(e);
}
zout.close();
}

public static void print(ZipEntry e){
PrintStream err = System.err;
err.print("added " + e.getName());
if (e.getMethod() == ZipEntry.DEFLATED) {
long size = e.getSize();
if (size > 0) {
long csize = e.getCompressedSize();
long ratio = ((size-csize)*100) / size;
err.println(" (deflated " + ratio + "%)");
}
else {
err.println(" (deflated 0%)");
}
}
else {
err.println(" (stored 0%)");
}
}
}

压缩文件代码:
import java.io.*;
import java.util.zip.*;//ZipOutputStream这个流在这里
import java.util.*;

public class ZipOutputStreamTest
{
     public static void main(String[] args) throws Exception
     {
       File f = new File("a.jpg");
       FileInputStream fis = new FileInputStream(f);
       BufferedInputStream bis = new BufferedInputStream(fis);
       byte[] buf = new byte[1024];
       int len;
       FileOutputStream fos = new FileOutputStream(f.getName()+".zip");
       BufferedOutputStream bos = new BufferedOutputStream(fos);
       ZipOutputStream zos = new ZipOutputStream(bos);//压缩包
       ZipEntry ze = new ZipEntry(f.getName());//这是压缩包名里的文件名
       zos.putNextEntry(ze);//写入新的 ZIP 文件条目并将流定位到条目数据的开始处

       while((len=bis.read(buf))!=-1)
       {
          zos.write(buf,0,len);
          zos.flush();
       }
       bis.close();
       zos.close(); 
     }
}

压缩文件夹代码:
import java.io.File;
import org.apache.tools.zip.ZipOutputStream; //这个包在ant.jar里,要到官方网下载
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipEntry;

public class CompressBook {
    public CompressBook() {}

    /**//*
    * inputFileName 输入一个文件夹
    * zipFileName 输出一个压缩文件夹
    */
    public void zip(String inputFileName) throws Exception {
        String zipFileName = "c:\\test.zip"; //打包后文件名字
        System.out.println(zipFileName);
        zip(zipFileName, new File(inputFileName));
    }

    private void zip(String zipFileName, File inputFile) throws Exception {
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
        zip(out, inputFile, "");
        System.out.println("zip done");
        out.close();
    }

    private void zip(ZipOutputStream out, File f, String base) throws Exception {
        if (f.isDirectory()) {
           File[] fl = f.listFiles();
           out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));
           base = base.length() == 0 ? "" : base + "/";
           for (int i = 0; i < fl.length; i++) {
           zip(out, fl[i], base + fl[i].getName());
         }
        }else {
           out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
           FileInputStream in = new FileInputStream(f);
           int b;
           System.out.println(base);
           while ( (b = in.read()) != -1) {
            out.write(b);
         }
         in.close();
       }
    }

    public static void main(String [] temp){
        CompressBook book = new CompressBook();
        try {
           book.zip("c:\\c");//你要压缩的文件夹
        }catch (Exception ex) {
           ex.printStackTrace();
       }
    }
}


由于java.util.zip.ZipOutputStream有中文乱码问题,所以采用org.apache.tools.zip.ZipOutputStream。 
以下是代码: 
Java代码 
package net.szh.zip;

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.zip.CRC32; 
import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry; 
import org.apache.tools.zip.ZipOutputStream;

public class ZipCompressor { 
static final int BUFFER = 8192;

private File zipFile;

public ZipCompressor(String pathName) { 
zipFile = new File(pathName); 
}

public void compress(String srcPathName) { 
File file = new File(srcPathName); 
if (!file.exists()) 
throw new RuntimeException(srcPathName + "不存在!"); 
try { 
FileOutputStream fileOutputStream = new FileOutputStream(zipFile); 
CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, 
new CRC32()); 
ZipOutputStream out = new ZipOutputStream(cos); 
String basedir = ""; 
compress(file, out, basedir); 
out.close(); 
} catch (Exception e) { 
throw new RuntimeException(e); 
} 
}

private void compress(File file, ZipOutputStream out, String basedir) { 
/* 判断是目录还是文件 */ 
if (file.isDirectory()) { 
System.out.println("压缩:" + basedir + file.getName()); 
this.compressDirectory(file, out, basedir); 
} else { 
System.out.println("压缩:" + basedir + file.getName()); 
this.compressFile(file, out, basedir); 
} 
}

/** 压缩一个目录 */ 
private void compressDirectory(File dir, ZipOutputStream out, String basedir) { 
if (!dir.exists()) 
return;

File[] files = dir.listFiles(); 
for (int i = 0; i < files.length; i++) { 
/* 递归 */ 
compress(files[i], out, basedir + dir.getName() + "/"); 
} 
}

/** 压缩一个文件 */ 
private void compressFile(File file, ZipOutputStream out, String basedir) { 
if (!file.exists()) { 
return; 
} 
try { 
BufferedInputStream bis = new BufferedInputStream( 
new FileInputStream(file)); 
ZipEntry entry = new ZipEntry(basedir + file.getName()); 
out.putNextEntry(entry); 
int count; 
byte data[] = new byte[BUFFER]; 
while ((count = bis.read(data, 0, BUFFER)) != -1) { 
out.write(data, 0, count); 
} 
bis.close(); 
} catch (Exception e) { 
throw new RuntimeException(e); 
} 
} 
} 
分享到:
评论

相关推荐

    Java用Zip压缩多个文件实例源码

    本篇文章将深入探讨如何使用Java的内置库`java.util.zip`来实现Zip文件的压缩功能,尤其是针对多个文件的压缩实例。我们将讨论相关的API、步骤以及源码解析。 1. **Java ZipOutputStream类**: `ZipOutputStream`...

    java版zip压缩解压代码

    以上就是关于`java版zip压缩解压代码`的相关知识点,这个程序的核心在于理解和使用`java.util.zip`包中的类,同时还需要掌握文件I/O和命令行参数处理等基础知识。在实际开发中,这样的工具可以方便地集成到自动化...

    java实现解压zip文件代码实例直接运行

    请注意,这个过程假设你的ZIP文件是通过正常的方式创建的,即使用ZIP格式直接压缩,而不是简单地更改文件后缀名。 首先,我们需要引入Java的`java.util.zip`包,它提供了处理ZIP文件的类,如`ZipInputStream`和`Zip...

    基于java的开发源码-用Zip压缩多个文件实例源码.zip

    基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于...

    java多文件压缩成zip文件并实现下载

    `ZipOutputStream`类用于创建ZIP文件,它可以接受一个`OutputStream`实例,通过调用`putNextEntry`和`write`方法来添加新的ZIP条目(即文件)并写入文件内容。 以下是实现这个功能的关键步骤: 1. **创建...

    Java调用Zip类批量压缩多个文件.rar

    Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。  public class ZipDemo extends JFrame{  JFileChooser fileChooser; //文件选择器  JList fileList; //待...

    java文件分割压缩

    5. **压缩与解压缩**:在Java中,`java.util.zip`包提供了对ZIP文件的操作支持。`ZipOutputStream`可以用来创建ZIP文件,将多个小文件合并成一个压缩包;而`ZipInputStream`则可以用来读取和解压缩ZIP文件。在`...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    要压缩文件或目录到ZIP文件,你需要创建一个`ZipOutputStream`实例,并将其包装在`FileOutputStream`上,指向你想要创建的ZIP文件。然后,你可以使用`ZipEntry`类来表示每一个要添加到ZIP文件的条目,通过调用`...

    Java用Zip压缩多个文件实例源码.zip

    在Java编程语言中,Zip压缩是一种常见的文件归档和压缩技术,用于将多个文件合并到一个单一的ZIP文件中,以便于存储、传输或备份。本实例源码着重讲解如何在Java中使用ZipOutputStream类来实现对多个文件的压缩操作...

    JAVA源码Java用Zip压缩多个文件实例源码

    JAVA源码Java用Zip压缩多个文件实例源码

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...

    java操作压缩文件和解压文件实例代码(经测试)

    在Java编程语言中,处理压缩文件(如ZIP或GZ格式)是一项常见的任务。本示例将探讨如何使用Java API来实现文件的压缩和解压缩功能。提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java...

    Java压缩zip实例

    CheckedOutputStream……Java压缩文件类

    Java用Zip压缩多个文件实例源码.rar

    本实例源码主要关注如何使用Java的ZipOutputStream类来将多个文件压缩成一个Zip文件。ZipOutputStream是Java IO库的一部分,它允许程序员创建符合ZIP格式的压缩输出流。 首先,我们需要引入必要的Java IO和Zip相关...

    Java源码包100个设计实例.zip

    Java二进制IO类与文件复制操作实例.rar Java从压缩包中提取文件.rar Java从网络取得文件.rar Java仓库管理系统,Access数据库.rar Java仿Vista界面风格的登录窗口.rar Java仿千千静听音乐播放器源代码.rar Java企业...

    java源码资源Java用Zip压缩多个文件实例源码

    java源码资源Java用Zip压缩多个文件实例源码提取方式是百度网盘分享地址

    java zip解压缩

    Java Zip压缩和解压缩是Java开发中常见的文件处理任务,主要涉及到`java.util.zip`包中的类和方法。本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。...

    java源码:Java用Zip压缩多个文件实例源码.rar

    这个实例源码展示了如何使用Java内置的`java.util.zip`库来实现Zip文件的创建,将多个文件压缩到一个单一的Zip档案中。让我们详细探讨一下这个过程中的关键知识点。 首先,我们需要导入必要的Java库: ```java ...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...

Global site tag (gtag.js) - Google Analytics