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 ...
随机推荐
- Java集合详解8:Java集合类细节精讲
今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http://cmsblogs.com/?cat=5 具体 ...
- RazorPage 小测试,作下记录
@page@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf@{}@functions{ public AppInfo item { ...
- Server Error in '/' Application Runtime Error 错误
项目发布后 在本地发布可以运行 在服务器就会出现这种错误 在网上也查找了各种资料 解决方案 都没有解决 因为我用的C# 首先在 Webconfig配置文件中的 system.web中加入 < ...
- php 通过header下载中文文件名 压缩包损坏或文件不存在的问题
开发中大家都是使用的utf8编码,昨天遇到一个奇坑,本是一件很小的问题,解决也浪费了个吧小时.废话不多说,植入正题: 文件下载方式:通过header二进制流文件下载需求: 文件上传保留文件名不变数据字 ...
- SpringIOC原理简述
IOC:控制反转(Inversion of Control,英文缩写为 IOC) 简单来讲就是把代码的控制权从调用方(用户)转变成被调用方(服务端) 以前的代码控制权在调用方,所以要每当程序要更新修改 ...
- android消息处理源码分析
一.简介消息处理机制主要涉及到这几个类:1.Looper2.MessageQueue3.Message4.Handler 二.源码分析 Looper.class的关键源码: //保存Looper对象, ...
- Api管家系列(二):编辑和继承Class
上篇写了个大概,今天我详细说一下参数的编辑,废话不多说 先打开一个项目,我要特别说一下设置里的“默认参数设置” 打开默认参数设置,这里我用红色圈出的tab可以设置请求头,返回头和返回状态,这些设置会在 ...
- 『练手』004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件
004 Laura.SqlForever如何扩展 导航栏 工具栏 右键菜单 插件 导航栏 插件扩展 比如下图的 窗口 > 关闭所有文档 这个导航栏: 在 任何程序集,任何命名空间,任 ...
- 微信小程序开发05-日历组件的实现
接上文:微信小程序开发04-打造自己的UI库 github地址:https://github.com/yexiaochai/wxdemo 我们这里继续实现我们的日历组件,这个日历组件稍微有点特殊,算是 ...
- springcloud情操陶冶-springcloud config server(二)
承接前文springcloud情操陶冶-springcloud config server(一),本文将在前文的基础上讲解config server的涉外接口 前话 通过前文笔者得知,cloud co ...