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 ll {
static final int BUFFER = 8192;
private File zipFile;
public ll(String pathName) {
zipFile = new File(pathName);
}
/**
* 压缩文件
* @param srcPathName
*/
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);
out.setEncoding("gbk");
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()) {
this.compressDirectory(file, out, basedir);
} else {
this.compressFile(file, out, basedir);
}
}
/** 压缩一个目录 */
private void compressDirectory(File dir, ZipOutputStream out, String basedir) {
if (!dir.exists())
return;
File[] files = dir.listFiles();
System.out.println(files.length+"--");
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);
}
}
private static String getName(String filename){
if ((filename != null) && (filename.length() > 0)) {
int q=filename.lastIndexOf("\\");
System.out.println(q);
if(filename.contains(".")){
int dot = filename.lastIndexOf('.');
if ((dot > -1) && (dot < (filename.length() - 1))&&q>-1&&(q < (filename.length() - 1))) {
return filename.substring(q+1,dot);
}
}else{
if (q>-1&&(q < (filename.length() - 1))) {
return filename.substring(q + 1);
}
}
}
return filename;
}
public static void main(String[] args) {
File f1=new File("C:\\Users\\Administrator\\Desktop\\s\\测试");
File f2=new File("C:\\Users\\Administrator\\Desktop\\s" );
String fl1=f1.getPath();
String fl2=f2.getPath();
String name=getName(fl1);
ll zc = new ll(fl2+"\\"+name+".zip");
zc.compress(fl1); //压缩一个文件夹
}
}
分享到:
相关推荐
java压缩文件的程序代码,可以压缩单个文件夹,单个标准文件,多个标准文件 多个文件夹,以及文件夹和文件混合的压缩代码
JAVA压缩文件代码 HUFFMAN函数的压缩代码
java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢
// 设置压缩文件入口entry,为被读取的文件创建压缩条目 File tempFile = new File(fileArray[i].toString()); String rootStr = file.getPath(); String entryStr = null; // entry以相对路径的...
压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....
工具类中提供的方法有:压缩单个文件,压缩多个文件,解压文件到制定路径下。获取压缩文件的文件列表。压缩文件的文件注释。
java压缩文件成zip实现无乱码 内置类与jar包
java压缩文件代码 关于Zip压缩文件
java压缩文件及解压的算法。方法使用见main函数
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
解决java压缩zip文件时的中文乱码问题 ...实现:java压缩文件成zip实现无乱码。 包括:写好的工具类与jar包。 使用方法:导入ant.jar包,调用CompressExcelOperate中的方法,即可实现压缩文件,并保证没有中文乱码。
NULL 博文链接:https://ynshun.iteye.com/blog/1917322
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...
java压缩文件时,必须要使用此jar包,之前试过别的很多方式,中文都会乱码
java 写的一个工具类可以用来解压缩zip,rar文件到指定的文件夹下
java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。