【Java】删除项目中多余的SVG图片资源
在DB库的菜单表,每个菜单会存放对应的svg图片名称,用于菜单渲染

在页面中的渲染:

在项目的目录的存放位置:

需求是这个目录还存放了很多不需要的svg图片,需要把他们删除掉
数量有七八十张,人肉手删效率低,容易删错,还要比较校验
解决:
所以我在后台项目里面写了一个单元测试:
首先随便找一个MybatisMapper
放上这个查询SQL:
package cn.ymcd.wss.config.dao; import cn.ymcd.wss.config.dto.AdvertiseDTO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select; import java.util.List; /**
* @projectName: wss-manager-server
* @author: Cloud9
* @date: 2022年07月26日 18:04
* @version: 1.0
*/
public interface AdvertiseDAO extends BaseMapper<AdvertiseDTO> { /**
*
* 查询有在使用的svg图片名称
* @param
* @return java.util.List<java.lang.String>
* @author Cloud9
* @createTime 2022/7/28 09:56
*
*/
@Select("SELECT DISTINCT ICON FROM PT_FUNC WHERE ICON IS NOT NULL ORDER BY ICON DESC")
List<String> queryUsedSvgIcons();
}
然后编写单元测试:
逻辑思路:
1、查出在系统使用了的svg资源名
2、开辟系统资源访问需要操作的svg资源目录
3、遍历目录,把下面的子文件逐个比较判断
4、匹配失败,表示未使用的svg,执行删除
package cn.ymcd.wss; import static org.junit.Assert.assertTrue; import cn.ymcd.wss.config.dao.AdvertiseDAO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.io.File;
import java.util.Arrays;
import java.util.List; /**
* Unit test for simple App.
*/ @RunWith(SpringRunner.class)
@SpringBootTest(classes = {ManagerBootApplication.class})
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
assertTrue( true );
} @Autowired
private AdvertiseDAO advertiseDAO; /**
* 删除未使用的svg资源
* @param
* @return void
* @author Cloud9
* @createTime 2022/7/27 10:37
*
* SELECT DISTINCT ICON FROM PT_FUNC WHERE ICON IS NOT NULL ORDER BY ICON DESC
*
*/
@Test
public void deleteSvgDirectoryUnusedResource() {
String filePath = "C:\\Users\\Administrator\\Desktop\\wss-web\\wss-manager-web\\src\\icons\\svg";
File file = new File(filePath);
System.out.println(file);
boolean isDir = file.isDirectory();
if (!isDir) return;
List<String> stringList = advertiseDAO.queryUsedSvgIcons();
List<File> fileList = Arrays.asList(file.listFiles()); for (File realFile : fileList) {
String path = realFile.getPath();
final String currentFileName = path.substring(path.lastIndexOf("\\") + 1);
String res = stringList.stream().filter(str -> currentFileName.equals(str + ".svg")).findFirst().orElse("");
if ("".equals(res)) realFile.delete();
}
}
}
【Java】删除项目中多余的SVG图片资源的更多相关文章
- Java 删除项目中的.svn信息
有时候拿过来的war包或者源代码中有.svn信息,我们想删除掉它,然后再上传到自己的svn中. 我这里是自己写的java代码实现的. package com.bstek.transit; import ...
- Java 处理json字符串value中多余的双引号
转: Java 处理json字符串value中多余的双引号 一.错误场景 json字符串的value值中有多余的双引号 1.直接上错误的json字符串 1 String errorJsonStr = ...
- java mysql删除表中多余的重复记录(多个字段),只留有id最小的记录
mysql 删除表中多余的重复记录(多个字段),只留有id最小的记录 DELETE FROM 表1 f WHERE (f.字段1,f.字段2) IN ( SELECT 字段1,字段2 FROM 表1 ...
- 详解Java 8中Stream类型的“懒”加载
在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...
- Java OOP中的字符串篇
字符串的三大特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String.St ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- 【java】浅析java组件中的布局管理器
这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...
- Java端使用Batik将SVG转为PNG
在上篇中,我们需要将Highcharts生成的图通过后台保存到pdf文件中,就需要对SVG进行转换. 这里就介绍一下使用Batik处理SVG代码的方法. 首先是jar包的获取地址,https://xm ...
- 避免 Java 代码中的“坏味道”
1.需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的.但是,当需要主键和取值时,迭代 entrySet() 才是更高效的 ...
- Java - Java开发中的安全编码问题
目录 1 - 输入校验 1.1 SQL 注入防范 1.2 XSS防范 1.3 代码注入/命令执行防范 1.4 日志伪造防范 1.5 XML 外部实体攻击 1.6 XML 注入防范 1.7 URL 重定 ...
随机推荐
- [SWPUCTF 2021 新生赛]easy_md5
打开靶场可以看到一串代码,进行代码审计我们可以知道这个网页包含了一个叫flag2.php的文件,如果想要得到这个文件就得进行GET传参和POST传参. 并且这里用到一个MD5绕过,传参的值不能相等,但 ...
- kafka集群
对于运维需要掌握的kafka基础操作,读写管理掌握后,下一步就是集群部署搭建了. 1. kafka天然支持集群 2. kafka将集群状态写入zookeeper. 集群部署 1. 确保zk启动 [de ...
- idea编译报错 静态Map初始化报错java.lang.ExceptionInInitializerError
idea编译报错 静态Map初始化报错java.lang.ExceptionInInitializerError package cc.mrbird.utils; import java.util.H ...
- http请求方式-HttpClient 微信退款的接口,需要证书请求 https请求
http请求方式-HttpClient import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import ...
- k8s安装prometheus
安装 在目标集群上,执行如下命令: kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-promet ...
- typroa破解
Typora 一款 Markdown 编辑器和阅读器 风格极简 / 多种主题 / 支持 macOS,Windows 及 Linux 实时预览 / 图片与文字 / 代码块 / 数学公式 / 图表 目录大 ...
- 算法金 | A - Z,115 个数据科学 机器学习 江湖黑话(全面)
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 机器学习本质上和数据科学一样都是依赖概率统计,今天整整那些听起来让人头大的机器学习江湖 ...
- NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)
前 言 本文档主要介绍TLIMX6U-EVM评估板硬件接口资源以及设计注意事项等内容. 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理 ...
- QT 使用相对路径读取.txt文件
QT可以使用QFile来读取.txt文件,具体代码实现如下: 1 #include <QCoreApplication> 2 #include <QString> 3 #inc ...
- 静态 top tree 入门
理论 我们需要一个数据结构维护树上的问题,仿照序列上的问题,我们需要一个方法快速的刻画出信息. 比如说线段树就通过分治的方式来通过将一个区间划分成 \(\log n\) 个区间并刻画出这 \(\log ...