package com.proxy;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtil {
public enum zipEnum {
byteLength(1024 * 2), srcPath("d:/快盘-学习"), objPath("d:/"), zipName(
"ac.zip");
zipEnum(int intData) {
this.intData = intData;
}
zipEnum(String strData) {
this.strData = strData;
}
public int getIntData() {
return intData;
}
public String getStrData() {
return strData;
}
private int intData = -1;
private String strData = null;
}
/**
* @param args
*/
public static void main(String[] args) {
zipDir(zipEnum.srcPath.getStrData(), zipEnum.objPath.getStrData(),
zipEnum.zipName.getStrData());
}
/**
* @判断输入的地址是文件名还是文件夹名
* @param srcPath:被压缩的文件或文件夹(源文件)
* @param objPath:压缩至某个路径
* @param zipName:压缩文件名
*/
public static void zipDir(String srcPath, String objPath, String zipName) {
if (srcPath == null) {
return;
}
File fileIn = new File(srcPath);
File fileOut = new File(objPath, zipName);
ZipOutputStream zipOut = null;
try {
zipOut = new ZipOutputStream(new FileOutputStream(fileOut));
//判断源文件是否是文件夹
if (!fileIn.isAbsolute()) {
//如果是文件
if (fileIn.isFile()) {
zipFile("", fileIn, zipOut);
} else {
System.out.println("输入的源文件地址错误");
}
} else {
//如果是文件夹
zipDirFile("", fileIn, zipOut);
}
} catch (FileNotFoundException e) {
System.out.println("目标文件错误");
e.printStackTrace();
} finally {
if (zipOut != null) {
try {
zipOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @压缩文件
* @param relName:压缩包内的路径位置
* @param fileIn:被压缩的文件
* @param zipOut:压缩输出
*/
private static void zipFile(String relName, File fileIn,
ZipOutputStream zipOut) {
//relName + fileIn.getName()类似于java文件夹下面java.txt文件这样的路径
ZipEntry zipEntry = new ZipEntry(relName + fileIn.getName());
FileInputStream fileSteam = null;
byte[] buf = new byte[zipEnum.byteLength.getIntData()];
int num = 0;
try {
fileSteam = new FileInputStream(fileIn);
zipOut.putNextEntry(zipEntry);
while ((num = fileSteam.read(buf)) != -1) {
zipOut.write(buf, 0, num);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileSteam != null) {
try {
fileSteam.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (zipEntry != null) {
zipEntry.clone();
}
}
}
/**
* @遍历文件夹中的文件或文件夹
* @param relName:压缩包内的路径位置
* @param fileIn:被压缩的文件
* @param zipOut:压缩输出
*/
private static void zipDirFile(String relName, File fileIn,
ZipOutputStream zipOut) {
//如果是文件
if (fileIn.isFile()) {
zipFile(relName, fileIn, zipOut);
} else {
String relNames = relName + fileIn.getName() + File.separator;
File[] files = fileIn.listFiles();
for (File fi : files) {
zipDirFile(relNames, fi, zipOut);
}
files.clone();
}
}
}
分享到:
相关推荐
本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...
JAVA实现的压缩文件夹、文件的程序,使用的时候,请把代码中的package语句改成相应的包名,或者直接删除,使用默认的包名。
以下是一个简单的示例,展示如何使用Java压缩一个文件夹: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.zip.ZipEntry; ...
在Java编程语言中,压缩文件夹到指定目录和指定名称是一项常见的任务,这通常涉及到对文件系统的操作和使用压缩库。Java提供了多种方法来实现这一功能,比如使用内置的`java.util.zip`包或者第三方库如Apache ...
java压缩文件夹,文件夹名称和文件名称支持中文
本篇文章将详细探讨如何使用Java内置的IO流来实现文件夹的zip压缩以及zip压缩包的解压,无需依赖其他的第三方库如Apache Commons IO或JavaZip。 ### 文件夹压缩成ZIP 首先,我们需要理解如何将一个文件夹及其内容...
java压缩文件的程序代码,可以压缩单个文件夹,单个标准文件,多个标准文件 多个文件夹,以及文件夹和文件混合的压缩代码
JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题 不...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
在.NET开发环境中,有时我们需要对文件或文件夹进行压缩处理,以便于存储、传输或备份。SharpZipLib是一个流行的开源库,它为.NET开发者提供了强大的ZIP和GZip压缩功能。本文将详细介绍如何利用SharpZipLib库来实现...
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...
在Java编程环境中,打包文件或文件夹到zip压缩包是一项常见的任务,这通常涉及到I/O操作和文件处理。`ZIPUtil`可能是一个自定义的工具类,用于简化这个过程。以下是一些关于如何在Java中实现这个功能的关键知识点: ...
ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。
zip解压缩文件文件夹都可以,代码清晰,注释多。非常容易看懂
java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。
在Java编程中,有时我们需要对文件或文件夹进行压缩和解压缩操作,这在数据传输、备份或存储优化等场景中十分常见。Apache提供了一个强大的第三方库——Commons Compress,它可以帮助我们处理各种格式的压缩文件,...
JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题...
1. **创建ZipOutputStream**:这是用来将多个文件或文件夹打包成ZIP文件的关键。你可以通过继承`OutputStream`的类来创建它,通常是一个指向你要创建的ZIP文件的`FileOutputStream`。 ```java FileOutputStream fos...
### Java 实现多个文件压缩成 RAR 压缩包 #### 背景与目的 在日常工作中,经常会遇到需要将多个文件压缩为一个压缩包的情况,以便于存储、传输或备份。Java 作为一种广泛使用的编程语言,在处理文件操作方面提供了...
在Windows环境下,使用Java进行程序开发时,有时我们需要对文件进行压缩操作,比如将文件压缩成RAR格式。这个过程涉及到Java的本地方法调用、文件I/O操作以及第三方库的集成。下面我们将详细探讨如何在Java中实现这...