项目场景:

最近有个需求,大致就是甲方提供表格数据和图片,我把这些数据和图片整理一下,存到数据库中,给前端提供查询接口。

我的处理方案是直接把图片根据和数据的联系,使用数据编码命名图片,把图片手动上传到静态资源服务器。把数据导入数据库,然后批量修改修改图片url字段为数据编码加.png,提供查询接口给前端。


问题描述

但甲方给的图片名称是中文的,手动修改图片名称太麻烦,简直不能忍。

好在给的图片名称是数据中某个字段中间的部分单词,于是动手写了一段修改文件名称的代码,这边记录下,方便下次同样的问题好CV。

话不多说,直接上代码:

/*** 批量修改文件名称** @author tangzhengchun*/
@RestController
@RequestMapping("test")
@Api(tags = "测试类")
@Slf4j
public class ITestController {@Resourceprivate IActStoreService iActStoreService;@PostMapping("/fileNameUpdate")@ApiOperation("修改文件名")@InterfaceLogRecord(interfaceNum = "test.fileNameUpdate")public Result<Object> fileNameUpdate() {log.info("开始获取文件");//文件目录路径String directoryPath = "E:\\test";File file = new File(directoryPath);if (!file.isDirectory()) {throw new RuntimeException("非目录!");}//目录下所有文件完整名称String[] fileNames = file.list();log.info("fileNames:{}", JSONObject.toJSONString(fileNames));if (fileNames == null) {throw new RuntimeException("该目录下文件为空!");}//存储文件名(不带后缀)String[] names = new String[fileNames.length];//存储文件类型(后缀)String[] fileTypes = new String[fileNames.length];//存储未在数据库中匹配到数据ArrayList<String> list = new ArrayList<>();for (int i = 0; i < fileNames.length; i++) {int lastIndex = fileNames[i].lastIndexOf(".");String fileName = fileNames[i].substring(0, lastIndex);log.info("fileName:{}", fileName);QueryWrapper<ActStore> queryWrapper = new QueryWrapper<>();queryWrapper.like("F_STORE_NAME", fileName);ActStore actStore = iActStoreService.getOne(queryWrapper);log.info("actStore:{}", actStore);if (null == actStore) {names[i] = fileName;list.add(fileName);} else {names[i] = actStore.getStoreNum();}String fileType = fileNames[i].substring(lastIndex);log.info("fileType:{}", fileType);fileTypes[i] = fileType;}for (int i = 0; i < fileNames.length; i++) {if (Objects.equals(fileNames[i], names[i] + fileTypes[i])) {continue;}//原文件File originalFile = new File(directoryPath + File.separator + fileNames[i]);if (!originalFile.exists()) {throw new RuntimeException("文件" + fileNames[i] + "不存在或已删除!");}File newFile = new File(directoryPath + File.separator + names[i] + fileTypes[i]);if (originalFile.renameTo(newFile)) {log.info("{}文件名修改成功!", names[i]);} else {log.error("文件名修改失败!");}}if (list.isEmpty()) {return Result.successInstance("文件名称全部修改成功!");} else {return Result.successInstance("部分文件修改失败,失败原因,未能在数据库中匹配", list);}}}

Java批量修改文件名称相关推荐

  1. Java批量修改文件名称(十四)

    古语有云: 万恶淫为首,百善孝为先. 我们后辈当自勉. 上一章简单介绍了Properties 类的详细使用(十三),如果没有看过,请观看上一章 一.批量修改文件名称 在生活和工作中,常常会遇到批量修改 ...

  2. 【JAVA工具类】批量修改文件名称修改成特定名称

    网上下载一些电子书可是这些电子书总是含有网址,太长看起来不好看,使用JAVA代码批量修改下  /********************************************* 系统名称: ...

  3. java修改file的名字_File类——JAVA实现批量修改文件名称

    最近做了一道题目如下 批量修改文件名称 假设你某天跟朋友出去玩,使用某数码相机拍摄了一些照片 但是当你回来的时候你发现所有的照片都是如下命名的 P1020335.JPG P1020336.JPG P1 ...

  4. 批量修改文件名称(Python)

    本程序功能:批量修改文件名称 import os import redef replaceDirName(rootDir): # 修改rootDir路径下的文件夹名num = 0dirs = os.l ...

  5. 使用OC语言批量修改文件名称

    使用OC语言批量修改文件名称 最近从网上下载很多电视剧,但是名字都不尽如人意,所以要进行批量修改,有强迫症的,需要把文件名弄的完美. 原有的文件名,修改后的是这样的 我们创建一个非常简单的项目即可,不 ...

  6. 百度网盘8种批量修改文件名称重命名的方法

    百度云盘在线批量修改文件名称教程 传送门:下载地址 推荐:第七种方式全盘搜索替换,无论文件在哪儿都可以找到并替换掉 百度网盘批量改名之关键词替换重命名(一) 百度云网盘批量改名之正则替换重命名(二) ...

  7. 怎么批量改计算机名字,批量修改文件名,教您如何批量修改文件名称

    现在使用电脑.智能手机,无非是为了多快好省的帮助我们完成各种"任务",加快效率.就拿文件批量重命名来说吧,现在个人电脑文件是越来越多的,对文件名进行统一规范的修改例如批量更改文件名 ...

  8. woo语言一行代码批量修改文件名称

    woo语言一行代码 批量修改文件名称 1.windows平台 – 下方代码在需要修改的文件夹内使用cmd执行即可,把wo后缀修改为woo后缀: woo.exe -r "a = _args() ...

  9. rename 命令 – 批量修改文件名称

    rename 命令的功能是用于批量修改文件名称.与 mv 命令一次只能修改一个文件名不同,rename命令能够基于正则表达式对文件名进行批量修改,但要求是把匹配规则准确的描述给系统. rename 命 ...

  10. 使用Python批量修改文件名称

    下载了一些图片,想要更改其文件的名称. 试了许多方法,都不太理想. 于是想到了使用Python来实现. 需要用到的模块及函数: import os rename() 函数用于改变文件或文件夹的名称.它 ...

最新文章

  1. 华为HCIE实验考试真题,杭州考场上午TS下午LAB
  2. 关系数据库基础:函数依赖知识笔记
  3. Ajax跨域提交JSON和JSONP
  4. Codeforces Round #772 (Div. 2) C. Differential Sorting(思维+构造)
  5. 三菱MX Component通信应用
  6. .xmind用什么软件打开_swf文件用什么打开 怎么把swf转换成mp4
  7. Fanvas, 把swf文件转html5 canvas js软件工具程序
  8. MK802与外部硬件设备的通讯
  9. 优秀工程师必备的三大思维,你拥有哪些?
  10. 使用HBuilder制作一个简单的HTML5动漫网页——紫罗兰永恒花园动漫价绍网页 7页
  11. 移动端适配:font-size设置方案的理解(浏览器调试移动端网页工具使用)
  12. 原生JavaScript盒子的移动
  13. 记录Python 入门练习题目
  14. Android系统音量调节策略学习总结
  15. 关于访问 WIN10共享打印机提示 无法连接到打印机的问题
  16. 科大讯飞语音功能小结
  17. 批发供应系统批发订货发货管理系统开发功能
  18. matlab/simulink电力电子仿真直流电机设置和使用
  19. C语言学习笔记:交换俩个变量的值
  20. 甘肃金昌市“公交一卡通”正式启用

热门文章

  1. [Ant] [StartWithAnt] 第一章 一个简单的Ant例子
  2. Vue 简单人脸识别
  3. C64x+ CPU中断 .
  4. 打造自己的博客(一)利用VuePress完成博客整体搭建,并支持评论和自动发布
  5. 让你的 commit 更有价值
  6. HTTP代理,正向反向,代理的作用
  7. 【Eye-Tracking】一、眼动追踪概述
  8. 华为Mate30安装google play服务最全方法
  9. java短信验证平台,Java实现发送短信验证码功能
  10. 市政管理学考试复习资料