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的内置库`java.util.zip`来实现Zip文件的压缩功能,尤其是针对多个文件的压缩实例。我们将讨论相关的API、步骤以及源码解析。 1. **Java ZipOutputStream类**: `ZipOutputStream`...
以上就是关于`java版zip压缩解压代码`的相关知识点,这个程序的核心在于理解和使用`java.util.zip`包中的类,同时还需要掌握文件I/O和命令行参数处理等基础知识。在实际开发中,这样的工具可以方便地集成到自动化...
请注意,这个过程假设你的ZIP文件是通过正常的方式创建的,即使用ZIP格式直接压缩,而不是简单地更改文件后缀名。 首先,我们需要引入Java的`java.util.zip`包,它提供了处理ZIP文件的类,如`ZipInputStream`和`Zip...
基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于java的开发源码-用Zip压缩多个文件实例源码.zip 基于...
`ZipOutputStream`类用于创建ZIP文件,它可以接受一个`OutputStream`实例,通过调用`putNextEntry`和`write`方法来添加新的ZIP条目(即文件)并写入文件内容。 以下是实现这个功能的关键步骤: 1. **创建...
Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。 public class ZipDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JList fileList; //待...
5. **压缩与解压缩**:在Java中,`java.util.zip`包提供了对ZIP文件的操作支持。`ZipOutputStream`可以用来创建ZIP文件,将多个小文件合并成一个压缩包;而`ZipInputStream`则可以用来读取和解压缩ZIP文件。在`...
要压缩文件或目录到ZIP文件,你需要创建一个`ZipOutputStream`实例,并将其包装在`FileOutputStream`上,指向你想要创建的ZIP文件。然后,你可以使用`ZipEntry`类来表示每一个要添加到ZIP文件的条目,通过调用`...
在Java编程语言中,Zip压缩是一种常见的文件归档和压缩技术,用于将多个文件合并到一个单一的ZIP文件中,以便于存储、传输或备份。本实例源码着重讲解如何在Java中使用ZipOutputStream类来实现对多个文件的压缩操作...
JAVA源码Java用Zip压缩多个文件实例源码
以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...
在Java编程语言中,处理压缩文件(如ZIP或GZ格式)是一项常见的任务。本示例将探讨如何使用Java API来实现文件的压缩和解压缩功能。提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java...
CheckedOutputStream……Java压缩文件类
本实例源码主要关注如何使用Java的ZipOutputStream类来将多个文件压缩成一个Zip文件。ZipOutputStream是Java IO库的一部分,它允许程序员创建符合ZIP格式的压缩输出流。 首先,我们需要引入必要的Java IO和Zip相关...
Java二进制IO类与文件复制操作实例.rar Java从压缩包中提取文件.rar Java从网络取得文件.rar Java仓库管理系统,Access数据库.rar Java仿Vista界面风格的登录窗口.rar Java仿千千静听音乐播放器源代码.rar Java企业...
java源码资源Java用Zip压缩多个文件实例源码提取方式是百度网盘分享地址
Java Zip压缩和解压缩是Java开发中常见的文件处理任务,主要涉及到`java.util.zip`包中的类和方法。本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。...
这个实例源码展示了如何使用Java内置的`java.util.zip`库来实现Zip文件的创建,将多个文件压缩到一个单一的Zip档案中。让我们详细探讨一下这个过程中的关键知识点。 首先,我们需要导入必要的Java库: ```java ...
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...