Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Kwan的解忧杂货铺@新空间代码工作室
SpringBoot-kwan
提交
80154ed9
S
SpringBoot-kwan
项目概览
Kwan的解忧杂货铺@新空间代码工作室
/
SpringBoot-kwan
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SpringBoot-kwan
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
80154ed9
编写于
10月 22, 2023
作者:
Kwan的解忧杂货铺@新空间代码工作室
🐭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:优化图片处理
上级
2716b0ca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
81 addition
and
36 deletion
+81
-36
src/main/java/com/kwan/springbootkwan/utils/FileContainsUtil.java
.../java/com/kwan/springbootkwan/utils/FileContainsUtil.java
+81
-36
未找到文件。
src/main/java/com/kwan/springbootkwan/utils/FileContainsUtil.java
浏览文件 @
80154ed9
...
@@ -12,6 +12,7 @@ import java.io.IOException;
...
@@ -12,6 +12,7 @@ import java.io.IOException;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* 删除博客中不存在的照片
* 删除博客中不存在的照片
...
@@ -25,7 +26,7 @@ public class FileContainsUtil {
...
@@ -25,7 +26,7 @@ public class FileContainsUtil {
/**
/**
* 默认图片不存在
* 默认图片不存在
*/
*/
private
static
boolean
IS_EXIST
=
false
;
private
static
ThreadLocal
<
Boolean
>
IS_EXIST
=
ThreadLocal
.
withInitial
(()
->
false
)
;
/**
/**
* 图片路径
* 图片路径
*/
*/
...
@@ -61,32 +62,8 @@ public class FileContainsUtil {
...
@@ -61,32 +62,8 @@ public class FileContainsUtil {
final
List
<
String
>
picNames
=
getPicName
(
PIC_PATH
);
final
List
<
String
>
picNames
=
getPicName
(
PIC_PATH
);
final
int
size
=
picNames
.
size
();
final
int
size
=
picNames
.
size
();
log
.
info
(
"图片总数为{}"
,
size
);
log
.
info
(
"图片总数为{}"
,
size
);
if
(
CollectionUtil
.
isNotEmpty
(
picNames
))
{
List
<
List
<
String
>>
groupedPicNames
=
dataGroup
(
picNames
);
outerloop:
moreThread
(
groupedPicNames
,
isNotExist
);
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
String
picName
=
picNames
.
get
(
i
);
//是白名单里面的图片,直接忽略
for
(
String
picPathWhitelist
:
PIC_PATH_WHITELISTS
)
{
if
(
picPathWhitelist
.
contains
(
picName
))
{
continue
outerloop
;
}
}
//默认不存在
IS_EXIST
=
false
;
//指定类型的文件
List
<
String
>
suffix
=
new
ArrayList
<>();
suffix
.
add
(
".md"
);
//包含某个字符串
traverseFolder
(
BLOG_FOLDER1
,
suffix
,
picName
);
traverseFolder
(
BLOG_FOLDER2
,
suffix
,
picName
);
traverseFolder
(
BLOG_FOLDER3
,
suffix
,
picName
);
//文件不存在
if
(!
IS_EXIST
)
{
isNotExist
.
add
(
picName
);
deletePic
(
PIC_PATH
+
picName
);
}
}
}
log
.
info
(
"不存在图片总数为{}"
,
isNotExist
.
size
());
log
.
info
(
"不存在图片总数为{}"
,
isNotExist
.
size
());
stopWatch
.
stop
();
stopWatch
.
stop
();
//毫秒输出
//毫秒输出
...
@@ -95,15 +72,85 @@ public class FileContainsUtil {
...
@@ -95,15 +72,85 @@ public class FileContainsUtil {
log
.
info
(
"耗时分钟数:{}"
,
JSON
.
toJSONString
(
stopWatch
.
getTotalTimeSeconds
()
/
60
));
log
.
info
(
"耗时分钟数:{}"
,
JSON
.
toJSONString
(
stopWatch
.
getTotalTimeSeconds
()
/
60
));
}
}
/**
* 多线程处理图片任务
*
* @param groupedPicNames
* @param isNotExist
*/
private
static
void
moreThread
(
List
<
List
<
String
>>
groupedPicNames
,
List
<
String
>
isNotExist
)
{
// 创建并启动4个线程来处理每个组的任务
List
<
Thread
>
threads
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
6
;
i
++)
{
final
List
<
String
>
group
=
groupedPicNames
.
get
(
i
);
Thread
thread
=
new
Thread
(()
->
{
// 在这里执行处理图片组的任务
if
(
CollectionUtil
.
isNotEmpty
(
group
))
{
for
(
String
picName
:
group
)
{
// 处理图片文件 picName
//是白名单里面的图片,直接忽略
for
(
String
picPathWhitelist
:
PIC_PATH_WHITELISTS
)
{
if
(
picPathWhitelist
.
contains
(
picName
))
{
continue
;
}
}
//默认不存在
IS_EXIST
.
set
(
false
);
//包含某个字符串
try
{
traverseFolder
(
BLOG_FOLDER1
,
picName
);
traverseFolder
(
BLOG_FOLDER2
,
picName
);
traverseFolder
(
BLOG_FOLDER3
,
picName
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
//文件不存在
if
(!
IS_EXIST
.
get
())
{
isNotExist
.
add
(
picName
);
deletePic
(
PIC_PATH
+
picName
);
}
}
}
});
thread
.
start
();
threads
.
add
(
thread
);
}
// 等待所有线程完成
for
(
Thread
thread
:
threads
)
{
try
{
thread
.
join
();
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
}
/**
* 数据分组
*
* @param picNames
* @return
*/
private
static
List
<
List
<
String
>>
dataGroup
(
List
<
String
>
picNames
)
{
int
groupSize
=
picNames
.
size
()
/
6
;
// 计算每组的大小
List
<
List
<
String
>>
groupedPicNames
=
picNames
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
e
->
picNames
.
indexOf
(
e
)
/
groupSize
))
.
values
()
.
stream
()
.
collect
(
Collectors
.
toList
());
return
groupedPicNames
;
}
/**
/**
* 获取文件
* 获取文件
*
*
* @param path
* @param path
* @param suffixs
* @param word
* @param word
* @throws IOException
* @throws IOException
*/
*/
public
static
void
traverseFolder
(
String
path
,
List
<
String
>
suffixs
,
String
word
)
throws
Exception
{
public
static
void
traverseFolder
(
String
path
,
String
word
)
throws
Exception
{
File
file
=
new
File
(
path
);
File
file
=
new
File
(
path
);
if
(
file
.
exists
())
{
if
(
file
.
exists
())
{
//获取文件夹下的文件
//获取文件夹下的文件
...
@@ -112,13 +159,11 @@ public class FileContainsUtil {
...
@@ -112,13 +159,11 @@ public class FileContainsUtil {
for
(
File
file2
:
files
)
{
for
(
File
file2
:
files
)
{
//是否是文件夹
//是否是文件夹
if
(
file2
.
isDirectory
())
{
if
(
file2
.
isDirectory
())
{
traverseFolder
(
file2
.
getAbsolutePath
(),
suffixs
,
word
);
traverseFolder
(
file2
.
getAbsolutePath
(),
word
);
}
else
{
}
else
{
for
(
String
suffix
:
suffixs
)
{
//包含md结尾的文件
//包含md结尾的文件
if
(
file2
.
getAbsolutePath
().
contains
(
".md"
))
{
if
(
file2
.
getAbsolutePath
().
contains
(
suffix
))
{
getParams
(
file2
.
getAbsolutePath
(),
word
);
getParams
(
file2
.
getAbsolutePath
(),
word
);
}
}
}
}
}
}
}
...
@@ -141,7 +186,7 @@ public class FileContainsUtil {
...
@@ -141,7 +186,7 @@ public class FileContainsUtil {
//判断是否包含方法名称,即指定字符串
//判断是否包含方法名称,即指定字符串
if
(
string
.
contains
(
word
))
{
if
(
string
.
contains
(
word
))
{
//文件存在
//文件存在
IS_EXIST
=
true
;
IS_EXIST
.
set
(
true
)
;
}
}
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录