【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 重定 ...
随机推荐
- js 判断闰年
首先,我们需要了解闰年的判断方式 1.能被4整除 2.并且不能被100整除 3.或者被400整除的 其次我们再来回顾下函数封装的知识,所谓的函数封装就是将一段函数封装成一个工具,有人用到了拿过来就可以 ...
- 一个或多个C文件编译KO
参考文档:.c文件如何编译为ko的MAKEFILE文件编写 - young525 - 博客园 (cnblogs.com) 文档组织结构 header目录:存放头文件 source目录:存放源文件 单个 ...
- Windows10 LTSC版,比Win7还干净
在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...
- react 数组列表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- String Record
T1. P5840 算法:ACAM+BIT+树链剖分 自然地,我们会对 \(s_i\) 建 ACAM,然后建出一颗 fail 树. 此时我们考虑集合内加入一个新的字符串.每一个匹配到的点我们都会给从这 ...
- NOIP 2023 三值逻辑
problem 我们定义 \(\text{T}\) 对应 \(n + 1\),\(\text{U}\) 对应 \(n + 2\),\(\text{F}\) 就是 \(-\text{T}\). 现在我们 ...
- 华擎 asrock b365m itx win7蓝牙播放音乐爆音
华擎 asrock b365m itx win7蓝牙播放音乐爆音,吱吱吱的杂音. 偶然间,系统换成WIN10后,再用蓝牙耳机听歌,则正常.机箱位置不变.
- zabbix-agent修改主动模式
1.zabbix-agent工作模式 zabbix-agent进程,有两种工作模式,主动模式,被动视频 1.1 被动模式 被动模式是指 zabbix-server 将需要请求的数据,发给zabbix- ...
- firewall-cmd设置NAT转换
配置ipv4转发 修改servera配置文件/etc/sysctl.conf ,修改参数为1 net.ipv4.ip_forward = 1 配置生效: sysctl -p 修改网卡的zone [ro ...
- PetaLinux常用命令汇总
创建petalinux工程 Create a new project from a reference BSP file. 用于从官方下载的BSP中抽取数据产生工程. petalinux-create ...