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实现的压缩文件夹、文件的程序,使用的时候,请把代码中的package语句改成相应的包名,或者直接删除,使用默认的包名。
NULL 博文链接:https://ynshun.iteye.com/blog/1917322
java压缩文件夹,文件夹名称和文件名称支持中文
下载前,请先看一下https://blog.csdn.net/qq_56323695/article/details/118530416这篇博客!
java压缩文件的程序代码,可以压缩单个文件夹,单个标准文件,多个标准文件 多个文件夹,以及文件夹和文件混合的压缩代码
JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题 不...
Java代码 可以压缩文件夹到指定目录和指定名称,将文件或者文件夹中的文件转成base64格式
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
// 设置压缩文件入口entry,为被读取的文件创建压缩条目 File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的...
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...
zip解压缩文件文件夹都可以,代码清晰,注释多。非常容易看懂
java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。
JAVA实现对文件夹“加密码压缩” 此资源解压后为一个文件夹,就是一个package包 (压缩后为Zip文件) 无需导入任何个人jar包 压缩后效果等同于用winrar给压缩包加密码 时间紧迫,暂时存在中文文件夹名称乱码问题...
5,压缩后的文件中是否保留文件夹层级关系(默认保留) 6,压缩后是否删除源文件(默认不删除) 注:由于WinRAR控制台模式不支持定义压缩文件格式,故压缩后的文件均为rar格式(若需要设置zip格式可以自行封装,开启WinRAR后台...
java编写源代码类文件,实现如下 1)多文件长传压缩 2)文件夹压缩
支持多文件压缩成一个文件;文件夹中的所有文件压缩成一个文件;解压文件到指定文件夹
3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。下文代码中的流操作使用了try-with- resources语法,...
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢