在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图片资源的更多相关文章

  1. Java 删除项目中的.svn信息

    有时候拿过来的war包或者源代码中有.svn信息,我们想删除掉它,然后再上传到自己的svn中. 我这里是自己写的java代码实现的. package com.bstek.transit; import ...

  2. Java 处理json字符串value中多余的双引号

    转: Java 处理json字符串value中多余的双引号 一.错误场景 json字符串的value值中有多余的双引号 1.直接上错误的json字符串 1 String errorJsonStr =  ...

  3. java mysql删除表中多余的重复记录(多个字段),只留有id最小的记录

    mysql 删除表中多余的重复记录(多个字段),只留有id最小的记录 DELETE FROM 表1 f WHERE (f.字段1,f.字段2) IN ( SELECT 字段1,字段2 FROM 表1 ...

  4. 详解Java 8中Stream类型的“懒”加载

    在进入正题之前,我们需要先引入Java 8中Stream类型的两个很重要的操作: 中间和终结操作(Intermediate and Terminal Operation) Stream类型有两种类型的 ...

  5. Java OOP中的字符串篇

    字符串的三大特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String.St ...

  6. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  7. 【java】浅析java组件中的布局管理器

    这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...

  8. Java端使用Batik将SVG转为PNG

    在上篇中,我们需要将Highcharts生成的图通过后台保存到pdf文件中,就需要对SVG进行转换. 这里就介绍一下使用Batik处理SVG代码的方法. 首先是jar包的获取地址,https://xm ...

  9. 避免 Java 代码中的“坏味道”

    1.需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的.但是,当需要主键和取值时,迭代 entrySet() 才是更高效的 ...

  10. Java - Java开发中的安全编码问题

    目录 1 - 输入校验 1.1 SQL 注入防范 1.2 XSS防范 1.3 代码注入/命令执行防范 1.4 日志伪造防范 1.5 XML 外部实体攻击 1.6 XML 注入防范 1.7 URL 重定 ...

随机推荐

  1. Pod安全策略:PodSecurityPolicy(PSP)

    目录 一.系统环境 二.前言 三.PodSecurityPolicy 简介 四.为什么需要 PodSecurityPolicy 五.给客户端授权 六.启用PodSecurityPolicy(PSP) ...

  2. 获得centos7网络yum源

    获得centos73网络yum源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 网易 wget -O /etc/yum.repos.d ...

  3. 使用WinSW把nginx做成windows服务

    1.下载nginx:http://nginx.org/en/download.html 2.下载win sw:https://github.com/winsw/winsw/releases/tag/v ...

  4. java8 API 函数式接口

    简介 14年,Oracle公司如期发布了Java 8正式版,Java8提供了强大的流式处理及函数式接口编程 函数式接口编程,相信很多人在javascript中都使用过,比如回调函数,如今Java8也吸 ...

  5. 阿里云OSS图片上传和显示注意点

    1. java.lang.IllegalArgumentException: The object key "/image-业务名称/20230818/20230818-订单号参数-acci ...

  6. k8s安装prometheus

    安装 在目标集群上,执行如下命令: kubectl apply -f https://github.com/512team/dhorse/raw/main/conf/kubernetes-promet ...

  7. LuBase 低代码开发框架介绍 - 可私有化部署

    框架定位 面向开发人员,针对管理软件领域,对页面交互和通用功能进行高阶封装,逐步打造成平台型.生态型开发工具. 涓涓细流 ,汇聚成海,基于 PBC(组件式开发)开发理念,让功能模块的复用更简单. 让管 ...

  8. python基础-列表list [ ]

    列表的定义和操作 列表的特性: 元素数量 支持多个 元素类型 任意 下标索引 支持 重复元素 支持 可修改性 支持 数据有序 是 使用场景 可修改.可重复的 一批数据记录场景 # 定义一个列表list ...

  9. pyside6 QThread 以及自定义信号 测试

    import sys import random from time import sleep from PySide6 import QtCore as qc from PySide6 import ...

  10. P5327 题解

    考虑把贡献摊到每个点上计算,每个点带来的贡献实际上是经过它的路径并大小,算完求和之后在除以 \(2\) 就得到了答案. 考虑怎么计算路径并大小. 考虑这样一个办法,将所有路径的起始点和终点按照 DFS ...