java压缩指定目录下的所有文件和文件夹的代码
将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助。
String sourceDir="E:\test";
int parentDirectoryLen=sourceDir.lastIndexOf(File.separator)+1;
File[] copyfoldersList = new File(sourceDir).listFiles();
FileOutputStream fos = new FileOutputStream("E:\test.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
for (int k = 0; k < copyfoldersList.length; k++) {
if (copyfoldersList[k].isDirectory()) {
LinkedList<String> copysourcepath = new LinkedList<String>(Arrays.asList(copyfoldersList[k].getAbsolutePath()));
while (copysourcepath.size() > 0) {
File folders = new File(copysourcepath.peek());
String[] file = folders.list();
for (int i = 0; i < file.length; i++) {
File ff = new File(copysourcepath.peek(), file[i]);
if (ff.isFile()) {
FileInputStream fis =null;
try {
fis = new FileInputStream(ff);
ZipEntry entry = new ZipEntry(ff.getAbsoluteFile().substring(parentDirectoryLen));
zipOut.putNextEntry(entry);
int nNumber;
byte[] buffer = new byte[Long.MIN_VALUE];
while ((nNumber = fis.read(buffer)) != -1)
zipOut.write(buffer, 0, nNumber);
} catch (IOException e) {
e.printStackTrace();
zipOut.close();
fos.close();
}finally{
try {
fis.close();
} catch (IOException e) {}
}
} else if (ff.isDirectory()) {
for (File f : temp.listFiles()) {
if (f.isDirectory())
copysourcepath.add(f.getPath());
else if (f.isFile()) {
FileInputStream fis =null;
try {
fis = new FileInputStream(f);
ZipEntry entry = new ZipEntry(f.getAbsoluteFile().substring(parentDirectoryLen));
zipOut.putNextEntry(entry);
int nNumber;
byte[] buffer = new byte[Long.MIN_VALUE];
while ((nNumber = fis.read(buffer)) != -1)
zipOut.write(buffer, 0, nNumber);
} catch (IOException e) {
e.printStackTrace();
zipOut.close();
fos.close();
}finally{
try {
fis.close();
} catch (IOException e) {}
}
}
}
}
}
copysourcepath.removeFirst();
}
}
}
try {
zipOut.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
zipOut.close();
fos.close();
} catch (IOException e) {}
}
java压缩指定目录下的所有文件和文件夹的代码的更多相关文章
- JAVA输出指定目录下的子目录和子文件
题目:给定一个目录,要求输出这个目录下面的子目录和子文件 逻辑: 先判断给定的是不是一个合法的目录,如果不是,则提示给定错误 如果是目录,那么使用File.listFile()获得这个目录下文件名的数 ...
- Java 读取指定目录下的文件名和目录名
需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { ...
- 运维笔记--Linux查找指定目录下某段时间的文件
查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...
- [bash]查找指定目录下符合格式的txt文件
需求: 查找指定目录下符合yyyy-MM-dd(-b)NNN.txt格式的文件,如“2020-03-22-b888.txt” 目标目录内容: [root@localhost bashs]# ll /r ...
- java 遍历指定目录下的文件夹并查找包含指定关键字的文件
输入指定关键字,在制定目录中查找包含关键字的文件,返回包含指定关键字的文件路径. package net.xsoftlab.baike; import java.io.File; import jav ...
- JAVA 删除指定目录下指定文件类型的所有文件
public class DelFile { public static void main(String[] args) { File file = new File("C:\\DETEC ...
- 运维笔记--Linux查找指定目录下包含某字符串的文件
待整理: 参考:http://blog.sina.com.cn/s/blog_53d496960102xg5c.html 例: find /home/logstash/ -type f | xargs ...
- Zip文件压缩(加密||非加密||压缩指定目录||压缩目录下的单个文件||根据路径压缩||根据流压缩)
1.写入Excel,并加密压缩.不保存文件 String dcxh = String.format("%03d", keyValue); String folderFileName ...
- TDirectory.GetFileSystemEntries获取指定目录下的目录和文件
使用函数: System.IOUtils.TDirectory.GetFileSystemEntries 所有重载: class function GetFileSystemEntries(const ...
随机推荐
- 如何手写JDK锁
手写JDK锁 需要三个步骤: 手写一个类MyLock,实现Lock接口 重写lock()方法 重写unlock()方法 代码: public class MyLock implements Lock ...
- Linux 系统调用过程详细分析
内核版本:Linux-4.19 操作系统通过系统调用为运行于其上的进程提供服务. 那么,在应用程序内,调用一个系统调用的流程是怎样的呢? 我们以一个假设的系统调用 xyz() 为例,介绍一次系统调用的 ...
- Rest_framework Serializer 序列化 (含源码浅解序列化过程)
目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...
- jqGrid 常用 总结 -2
这次的总结是针对于一次bug,先说下我们遇到的问题,就是后台人员告诉我们添加数据到100条数据的时候,101条就看不到,当时我觉得就是没有分页的原因,所以我就以为在jqgrid中设置一个loadonc ...
- Sql server数据库定时任务,数据库作业,数据库定时任务
当需要周期性的去执行一个方法时,我们可以先写好方法,然后交给数据库去完成就可以的. 步骤:首先打开SQL数据库中SQLServer代理-->右键作业-->新建作业: 如果SQL Serve ...
- emacs 高亮
用途:让某个单词高亮显示 1,安装 m-x 回车,输入list-packages 在列表中找到highlight-symbol后,鼠标点击它,再点击安装 2,在.emacs中配置 ;;高亮 (requ ...
- 两个inline-block中间有空白,解决inline-block 元素之间的空白问题
目录 一.遇到的问题 二.举个简单的栗子分析问题 三.解决办法 一.遇到的问题 前些天写瀑布流布局的时候,发现明明计算好了宽度使得一行能放下三张图片,实际效果却总是放不下,图片会挤到下一行去.上图: ...
- 暖春许愿季丨i春秋给你送福利
没有一点点防备 也没有一丝顾虑 就这样出现——暖春许愿季 纳尼?这不是我的歌声里 是i春秋在搞活动 这次准备搞个大的 多大呢 看这里 你许下心愿 我帮你实现 这是一棵神奇的心愿树 是一个畅所欲言之地 ...
- Java体系学习书籍推荐
以下所有资料均可在:Java知识分享网下载. 大家有推荐的书可以在下方留言! 开源代码GitHub仓库总结 计算机基础 计算机科学导论 --(如果不是计算机科班的,应先看看计算机基础,了解一些基本概 ...
- 跟我一起学opencv 第三课之图像在opencv中的表示-Mat对象
1.下面第一章图是一位美女图像,和其他数据一样图像在计算机中也是以二进制存储,下面第二张图 2.在摄像头眼里一幅图像就是一个矩阵或者说是二维数组,数组元素是像素值 3.opencv中以Mat对象表示图 ...