public boolean downZipOrder(String sourceUrl,String purposeUrl){
boolean flag=false;
// 初始化支持多级目录压缩的ZipMultiDirectoryCompress
ZipMultiDirectoryCompress zipCompress = new ZipMultiDirectoryCompress();
// 压缩目录,可以指向一个文件
// String directory = ExcelUtil.DOC_DIR ;
// 生成的压缩文件
// String destFile = "d:/all.zip";
// 默认的相对地址,为根路径
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
// 创建一个Zip输出流
zos = new ZipOutputStream(new FileOutputStream(purposeUrl));
zos.setEncoding("GBK");
// 启动压缩进程
zipCompress.startCompress(zos, sourceUrl);
flag=true;
} catch (FileNotFoundException e) {
flag=false;
e.printStackTrace();
} finally {
try {
if (zos != null)
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(System.currentTimeMillis() - start);
return flag;
}
public void startCompress(ZipOutputStream zos, String directory) {
startCompress(zos, StringUtils.EMPTY, directory);
}
public void startCompress(ZipOutputStream zos, String oppositePath, String directory) {
File file = new File(directory);
if (file.isDirectory()) {
// 如果是压缩目录
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File aFile = files[i];
if (aFile.isDirectory()) {
// 如果是目录,修改相对地址,apache解决了中文字符乱码问题。
String newOppositePath = oppositePath + aFile.getName() + "/";
// 创建目录
compressDirectory(zos, oppositePath, aFile);
// 进行递归调用
startCompress(zos, newOppositePath, aFile.getPath());
} else {
// 如果不是目录,则进行压缩
compressFile(zos, oppositePath, aFile);
}
}
} else {
// 如果是压缩文件,直接调用压缩方法进行压缩
compressFile(zos, oppositePath, file);
}
}
public void compressFile(ZipOutputStream zos, String oppositePath, File file) {
// 创建一个Zip条目,每个Zip条目都是必须相对于根路径
ZipEntry entry = new ZipEntry(oppositePath + file.getName());
InputStream is = null;
try {
entry.setUnixMode(644);
// 将条目保存到Zip压缩文件当中
zos.putNextEntry(entry);
// 从文件输入流当中读取数据,并将数据写到输出流当中.
is = new FileInputStream(file);
int length = 0;
byte[] buffer = new byte[BUF_SIZE];
while ((length = is.read(buffer, 0, BUF_SIZE)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (is != null)
is.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void compressDirectory(ZipOutputStream zos, String oppositePath, File file) {
// 压缩目录,这是关键,创建一个目录的条目时,需要在目录名后面加多一个"/"
ZipEntry entry = new ZipEntry(oppositePath + file.getName() + "/");
try {
entry.setUnixMode(755);
zos.putNextEntry(entry);
zos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
Jenkins一键打包流程示意, 以及Jenkins响应的配置文件和unity3d工程源码。 简单设置之后可以直接实现打包操作。
在目录上传之前需要用户将需上传的所有目录打包成RAR或ZIP,然后上传到服务器,服务器会解压打包文件,并按照目录结构把文件、子目录依次插入到个人文件柜的当前目录下。所以服务器上PHP需要zip与rar的扩展,附件内...
0,支持用户登陆和退出管理1,建立目录2,建立文件3,删除文件或者目录(整个目录)4,文件改名5,可同时上传8个文件6,在线文件编辑7,可更改文件属性8,可拷贝整个目录(注意,是拷贝里面的文件,如你选的是images...
文件打包,是将多个文件或者整个目录合并成一个文件,用来进行文件的备份、分发、传输等。与文件压缩不同指出在于没有对文件进行压缩操作 Linux支持的压缩格式 *.Z compress 程序压缩文件 *.gz gzip...
可以使用一个命令将整个目录结构打包到zip存档中。 对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。(如果添加了bzip 2支持,zip也可以使用bzip 2...
更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新文件。 i[i|c|h|t]=<字符串> 在压缩文件中查找字符串。 支持下列可选参数: i - 不区分大小写(默认); c - 区分大小写搜索; h - 十六...
可在线压缩网站某文件夹或者打包整个网站,方便备份网站文件并下载
实现起来也不复杂,就是为了提高性能,避免读取整个文件,需要在注释的最后加入几个MAGIC字节,这样从文件的最后开始,读取很少的几个字节就可以定位 渠道名的位置。几个常量定义:// ZIP文件的注释最长65535个...
总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现...如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲数据传送给客户端 通过feof()函数,可以判断要读取的文件
这个Python源码实现了将多个Excel工作表保留格式地复制到一个汇总表中,并生成一个包含所有工作...最后,将整个目录打包成一个ZIP文件。这个自动化办公工具可以帮助用户快速整理和归档大量的Excel数据,提高工作效率。
VS2017 编译的 openface 可执行文件。exe直接可用,Landmark, Eye gaze, Head pose, Union recognition.
Roundcube打包下载插件.zipdownload作为压缩文件下载所有附件。通过可选选定的邮件或整个文件夹下载功能.
拉链IntelliJ插件 Zipper增加了将整个项目打包到单个ZIP文件中的功能。 真正快速创建备份的理想选择。 只需选择菜单>工具>打包整个项目,或按CTRL + SHIFT + P即可。
此外,.apk 文件会重新打包为 .bar 文件(BlackBerry 安装程序)。 安卓版 Total Commander 中文版安卓版 Total Commander 中文版 Total Commander 主要特点 : –复制,移动整个子目录 –拖放(长按文件图标,...
##运行说明 程序都是用vs2015+opencv2.4.9.opencv已打包在内 在matchAndRecognition里面训练文件夹是我整理好的图片数据 Script文件夹是python文件,里面HumanActionRecognitionTrain.py是整个的训练文件,...
打包整个工作区 选择压缩文件的输出位置,单击“确定”按钮就可以了。由于代码所在目录通常还有VC编译生成的临时文件,用户还可以选择打包过程中排除这些文件,在“打包压缩设置”窗口中可以设置文件选择方式: ...
4、可以自动备份整个目录下的所有文件(包括子目录)。 5、可以只备份已经更新过的文件,加快备份速度。 6、可以自动删除源目录中没有的文件和目录(实现源目录与目的目录的同步) 7、详尽的备份日志清单,...
4、可以自动备份整个目录下的所有文件(包括子目录)。 5、可以只备份已经更新过的文件,加快备份速度。 6、可以自动删除源目录中没有的文件和目录(实现源目录与目的目录的同步) 7、详尽的备份日志清单,...
习惯使用的打包工具就是 Inno Setup,而 Inno Setup 是用于安装软件的流行程序。不幸的是,没有官方的解压程序-将文件从自解压的可执行文件中取出的...现在,如果将 program.exe 复制到另一个位置,将创建整个目录树