Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibzlite
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibzlite
提交
dbdaa041
提交
dbdaa041
编写于
1月 21, 2021
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化初始化模型逻辑
上级
6d497d93
变更
1
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
161 行增加
和
0 行删除
+161
-0
FileHelper.java
...util/src/main/java/cn/ibizlab/util/helper/FileHelper.java
+161
-0
未找到文件。
ibzlite-util/src/main/java/cn/ibizlab/util/helper/FileHelper.java
0 → 100644
浏览文件 @
dbdaa041
package
cn
.
ibizlab
.
util
.
helper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.util.StringUtils
;
import
java.io.*
;
import
java.nio.charset.Charset
;
import
java.util.Enumeration
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipFile
;
@Slf4j
public
class
FileHelper
{
/**
* zip解压
* @param zipFile zip文件路径
* @param descDir 解压目录
*/
public
static
boolean
unzip
(
File
zipFile
,
String
descDir
,
boolean
exp
)
throws
IOException
{
try
{
//解决zip文件中有中文目录或者中文文件
ZipFile
zip
=
new
ZipFile
(
zipFile
,
Charset
.
forName
(
"GBK"
));
String
root
=
zipFile
.
getName
().
replace
(
".zip"
,
"/"
);
for
(
Enumeration
files
=
zip
.
entries
();
files
.
hasMoreElements
();)
{
ZipEntry
file
=
(
ZipEntry
)
files
.
nextElement
();
String
fileName
=
exp
?
file
.
getName
().
replace
(
root
,
""
):
file
.
getName
();
InputStream
in
=
zip
.
getInputStream
(
file
);
if
(
StringUtils
.
isEmpty
(
fileName
)){
continue
;
}
String
outPath
=
(
descDir
+
File
.
separator
+
fileName
).
replaceAll
(
"\\\\"
,
"/"
);
//输出文件路径信息
log
.
debug
(
outPath
);
//判断路径是否存在,不存在则创建文件路径
File
folder
=
new
File
(
outPath
.
substring
(
0
,
outPath
.
lastIndexOf
(
'/'
)));
if
(!
folder
.
exists
())
{
folder
.
mkdirs
();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if
(
new
File
(
outPath
).
isDirectory
())
{
continue
;
}
OutputStream
out
=
new
FileOutputStream
(
outPath
);
byte
[]
buf1
=
new
byte
[
1024
];
int
len
;
while
((
len
=
in
.
read
(
buf1
))>
0
)
{
out
.
write
(
buf1
,
0
,
len
);
}
in
.
close
();
out
.
close
();
}
log
.
debug
(
"******************解压完毕********************"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
true
;
}
/**
* 复制文件夹
*
* @param resource 源路径
* @param target 目标路径
*/
public
static
void
copyFolder
(
String
resource
,
String
target
)
throws
Exception
{
File
resourceFile
=
new
File
(
resource
);
if
(!
resourceFile
.
exists
())
{
throw
new
Exception
(
"源目标路径:["
+
resource
+
"] 不存在..."
);
}
File
targetFile
=
new
File
(
target
);
if
(!
targetFile
.
exists
())
{
targetFile
.
mkdirs
();
}
// 获取源文件夹下的文件夹或文件
File
[]
resourceFiles
=
resourceFile
.
listFiles
();
for
(
File
file
:
resourceFiles
)
{
File
file1
=
new
File
(
targetFile
.
getAbsolutePath
()
+
File
.
separator
+
resourceFile
.
getName
());
// 复制文件
if
(
file
.
isFile
())
{
log
.
debug
(
file
.
getPath
());
// 在 目标文件夹(B) 中 新建 源文件夹(A),然后将文件复制到 A 中
// 这样 在 B 中 就存在 A
if
(!
file1
.
exists
())
{
file1
.
mkdirs
();
}
File
targetFile1
=
new
File
(
file1
.
getAbsolutePath
()
+
File
.
separator
+
file
.
getName
());
copyFile
(
file
,
targetFile1
);
}
// 复制文件夹
if
(
file
.
isDirectory
())
{
// 复制源文件夹
String
dir1
=
file
.
getAbsolutePath
();
// 目的文件夹
String
dir2
=
file1
.
getAbsolutePath
();
copyFolder
(
dir1
,
dir2
);
}
}
}
/**
* 复制文件
*
* @param resource
* @param target
*/
public
static
void
copyFile
(
File
resource
,
File
target
)
throws
Exception
{
// 文件输入流并进行缓冲
FileInputStream
inputStream
=
new
FileInputStream
(
resource
);
BufferedInputStream
bufferedInputStream
=
new
BufferedInputStream
(
inputStream
);
// 文件输出流并进行缓冲
FileOutputStream
outputStream
=
new
FileOutputStream
(
target
);
BufferedOutputStream
bufferedOutputStream
=
new
BufferedOutputStream
(
outputStream
);
// 缓冲数组
// 大文件 可将 1024 * 2 改大一些,但是 并不是越大就越快
byte
[]
bytes
=
new
byte
[
1024
*
2
];
int
len
=
0
;
while
((
len
=
inputStream
.
read
(
bytes
))
!=
-
1
)
{
bufferedOutputStream
.
write
(
bytes
,
0
,
len
);
}
// 刷新输出缓冲流
bufferedOutputStream
.
flush
();
//关闭流
bufferedInputStream
.
close
();
bufferedOutputStream
.
close
();
inputStream
.
close
();
outputStream
.
close
();
}
/**
* 删除文件
*
* @param dirPath
*/
public
static
void
deleteDir
(
String
dirPath
)
{
File
file
=
new
File
(
dirPath
);
if
(
file
.
isFile
())
{
file
.
delete
();
}
else
{
File
[]
files
=
file
.
listFiles
();
if
(
files
==
null
)
{
file
.
delete
();
}
else
{
for
(
int
i
=
0
;
i
<
files
.
length
;
i
++)
{
deleteDir
(
files
[
i
].
getAbsolutePath
());
}
file
.
delete
();
}
}
}
}
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录