1、用java.util.zip下的工具压缩
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class UtilZip {
public static void main(String[] args) throws Exception{
String srcFileName="D:/mail.eml";
String zipFileName="D:/mail.zip";
try {
zipFile(srcFileName,zipFileName);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void zipFile(String srcFileName,String zipFileName) throws Exception{
FileInputStream fis=null;
ZipOutputStream zos=null;
File srcFile=new File(srcFileName);
fis=new FileInputStream(srcFile);
zos=new ZipOutputStream(new FileOutputStream(new File(zipFileName)));
zos.putNextEntry(new ZipEntry(srcFile.getName()));
byte[] buffer=new byte[4028];
int readed=0;
while((readed=fis.read(buffer))!=-1){
zos.write(buffer,0, readed);
}
//这里一定要关闭流,否则压缩文件会损坏
zos.closeEntry();
zos.close();
fis.close();
}
}
2、用ant.jar包里面的工具压缩
import java.io.*;
import org.apache.tools.zip.ZipOutputStream;
public class AntZip {
public static void main(String arg[]) {
String srcFilePath = new String("D:/邮件");
String outFilename = new String("D:/mail.rar");
AntZip.zipFileByAnt(srcFilePath, outFilename);
}
public static void zipFileByAnt(String srcFilePath,String zipFileName) {
try {
File srcPath = new File(srcFilePath);
int fileCount = srcPath.listFiles().length;
String[] filenames = new String[fileCount];
byte[] buffer = new byte[1024];
File[] files = srcPath.listFiles();
for (int i = 0; i < fileCount; i++) {
filenames[i] = srcPath.getPath() + File.separator + files[i].getName();
}
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
out.setEncoding("UTF-8");
FileInputStream fis=null;
for (int i = 0; i < filenames.length; i++) {
fis = new FileInputStream(filenames[i]);
out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));
int readed;
while ((readed = fis.read(buffer)) > 0) {
out.write(buffer, 0, readed);
}
}
out.closeEntry();
out.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、压缩文件
package jp.com.syspro.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
public class ZipFile {
public static void main(String[] args) {
zip("D:/Temp/DWR与界面开发", "D:/Temp/DWR与界面开发.zip");
}
public static void zip(String srcFile){
zip(srcFile,"");
}
public static void zip(String srcFile, String zipFile) {
File src = new File(srcFile);
if (src.exists()) {
// 压缩文件不存在时,压缩到当前目录
if ("".equals(zipFile) || zipFile == null) {
if (src.isDirectory()) {
zipFile = srcFile + ".zip";
} else {
zipFile = srcFile.split("\\.")[0] + ".zip";
}
} else {
if (!zipFile.contains(srcFile)) {
File zip = new File(zipFile);
if (!zip.getParentFile().exists()) {
zip.getParentFile().mkdirs();
}
} else {
// 压缩文件在被压缩的文件夹里面时,压缩到当前目录
zipFile = srcFile + ".zip";
}
}
zip(src, zipFile);
}
}
public static void zip(File file, String zipFile) {
try {
FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
zip(zos, file, "");
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void zip(ZipOutputStream zos, File file, String base) {
zos.setEncoding("UTF-8");
if (file.isDirectory()) {
File[] files = file.listFiles();
try {
zos.putNextEntry(new ZipEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < files.length; i++) {
zip(zos, files[i], base + files[i].getName());
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
zos.putNextEntry(new ZipEntry(base));
FileInputStream fis = new FileInputStream(file);
int readed = 0;
while ((readed = fis.read()) != -1) {
zos.write(readed);
}
zos.flush();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
在Java编程环境中,处理文件压缩和解压缩是常见的任务,特别是在构建可执行的JAR包或者处理数据传输时。本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们...
GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...
这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...
综上所述,这个实践项目涵盖了Java文件压缩与解压缩的核心技术,是学习和理解Java I/O和压缩库的宝贵资源。通过阅读源代码和论文,开发者不仅可以学习如何在Java中进行文件压缩,还能了解到如何将这些技术应用于实际...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
总结,Java中处理RAR文件压缩和解压需要借助第三方库,如Apache Commons Compress或jRar。选择哪种库取决于你的具体需求,如对RAR5格式的支持、性能优化等。在实现过程中,需要了解并掌握这些库的API,以及如何正确...
java压缩解压文件
在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...
java 文件zip 压缩与解压 可以直接调用
虽然Ant本身不是直接用于文件压缩,但它包含的`ZipTask`和`UnzipTask`可以方便地在Ant脚本中进行文件压缩和解压。如果`ZipFileList.java`使用了Ant的功能,那么可能通过`org.apache.tools.ant.types.FileSet`选择要...
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....
在Java编程语言中,GZIP是一种常用的文件压缩格式,...了解并掌握这些基础知识对于进行Java文件处理和数据传输是非常重要的。同时,根据项目需求,你可能还需要考虑其他优化和错误处理策略,以确保代码的健壮性和效率。
JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压
在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java...同时,处理文件压缩和解压缩时要注意错误处理和资源管理,避免内存泄漏和文件损坏等问题。
通过提供的代码文件`CompressTestMain.java`、`GzipUtils.java`和`ZipUtils.java`,我们可以推测作者可能构建了一个测试环境,比较了Gzip和Zip压缩算法在实际操作中的性能差异。 首先,让我们了解Gzip和Zip的基本...
在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...
java中通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能。java源码————资源共享,一起进步。