C# 批量更改文件后缀名称
解决问题思路
解决固定文件夹下更改文件后缀名,采用轮询的方式,
流程如下:
- 获取当前文件名(带后缀的文件名)
- 截取文件名称,去掉后缀
- 另存为带更改后的后缀文件
注意:采用第三方插件,附:源码和插件
开发工具:vs2022
库环境:.net Framework4.8
引用插件库:LongHunFramework
二、程序介绍
1.获取需要修改文件所在文件夹,及需要修改文件的后缀名
string dirPath = "G:\\Code\\demo2\\GRJ2A\\bin\\data\\map\\tiles";//Console.ReadLine();if (Directory.Exists(dirPath)){string hbStr_DictionaryPath = dirPath;List<string> hbListStr_AllFile = new List<string>();string dirPath = "G:\\Code\\demo2\\GRJ2A\\bin\\data\\map\\tiles";//Console.ReadLine();if (Directory.Exists(dirPath)){string hbStr_DictionaryPath = dirPath;List<string> hbListStr_AllFile = new List<string>();//! 获取全部pnghlFileIO.hfjGetAllFileListByExtension(hbStr_DictionaryPath, ref hbListStr_AllFile, ".png");}//! 获取全部pnghlFileIO.hfjGetAllFileListByExtension(hbStr_DictionaryPath, ref hbListStr_AllFile, ".png");}
dirPath:路径为需要修改文件所在文件夹路径,操作前需要判断当前文件夹是否存在,如果存在可以执行下一步,如过不存在,则退出。
Ref:为net程序返回变量,hbListStr_AllFile变量前加上ref后,hbListStr_AllFile会输出该方法的返回值;
- 遍历修改文件后缀名,并保存
//! 遍历文件解决for (int i = 0; i < hbListStr_AllFile.Count; i++){string nowOldFileFullName = hbListStr_AllFile[i];//获取当前文件全路径, 例如 c:/83838/3/3/3/43/4/122.pngstring hbOldFileName = Path.GetFileName(nowOldFileFullName);//返回 122.png 这样的文件名string hbDictionary = Path.GetDirectoryName(nowOldFileFullName);// 返回 目录,例如 "c:/83838/3/3/3/43/4"string hbOldFileOnlyName = Path.GetFileNameWithoutExtension(nowOldFileFullName);// 获取"122"这样的名称string hbNewFileName = hbOldFileOnlyName + ".jpg"; //新的名字 "122.jpg"string newFileFullPath = Path.Combine(hbDictionary, hbNewFileName); //新文件的全路径, 例如 " c:/83838/3/3/3/43/4/122.jpg"if (File.Exists(newFileFullPath)){Console.WriteLine($"因为已经存在[{newFileFullPath}], 所以没有对文件[{nowOldFileFullName}]进行操作!");}else{hlFileIO.hfjMoveAFile(nowOldFileFullName, newFileFullPath, true);}Console.WriteLine($"{i}/{hbListStr_AllFile.Count} 已修改完成...");}
提示:如果想修改多层级的文件夹,需要用到递归算法,递归每一层级的文件夹下的文件
亲测可用
相关文章:
C# 批量更改文件后缀名称
解决问题思路 解决固定文件夹下更改文件后缀名,采用轮询的方式, 流程如下: 获取当前文件名(带后缀的文件名)截取文件名称,去掉后缀另存为带更改后的后缀文件 注意:采用第三方插件࿰…...
KIC算法介绍及pyrosetta示例代码
Kinetic Loop Closure (KIC) 是 Rosetta 中一种重要的环区(loop region)建模算法,主要用于解决蛋白质中的柔性区域(特别是环区)的重构问题。环区是蛋白质中非常灵活的部分,通常结构不确定。KIC 算法采用基于运动学的解决方案,通过设置特定的几何约束,能够在给定的两端锚…...
【论文串烧】多媒体推荐中的模态平衡学习 | 音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响
文章目录 一、多媒体推荐中的模态平衡学习1.1 研究背景1.2 解决问题1.3 实施方案1.4 文章摘要1.5 文章重点1.6 文章图示图 1:不同模型变体在 AmazonClothing 数据集上的初步研究图 2:CKD模型架构的说明图 3:在 Amazon-Clothing 数据集上训练过…...
【C语言二级考试】循环结构设计
C语言二级考试——循环结构程序设计 五.循环结构程序设计 1.for循环结构 2.while和do-while循环结构 3.continue语句和break语句 4.循环的嵌套 知识点参考【C语言】循环-CSDN博客 文章目录 1.for循环2.while和do-while循环结构3.continue语句和break语句4.循环的嵌套 1.for循环…...
诗文发布模板(python代码打造键盘录入诗文自动排版,MarkDown源码文本)
python最好用的f-string,少量代码打造键盘录入诗文自动排版。 (笔记模板由python脚本于2024年09月19日 19:11:50创建,本篇笔记适合喜欢写诗的pythoner的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free&am…...
GO主流开源框架
GO主流开源框架 Go 语言有着丰富的开源框架生态,涵盖了多种应用场景,如 Web 开发、数据库操作、微服务、日志处理等。以下是一些常见的 Go 框架及其典型作用场景: 1. Web 框架 Gin: 作用:一个高性能的轻量级 Web 框架ÿ…...
LeetCode:2398. 预算内的最多机器人数目 双指针+单调队列,时间复杂度O(n)
2398. 预算内的最多机器人数目 today 2398. 预算内的最多机器人数目 题目描述 你有 n 个机器人,给你两个下标从0开始的整数数组 chargeTimes 和 runningCosts ,两者长度都为 n 。第 i 个机器人充电时间为 chargeTimes[i] 单位时间,花费 ru…...
oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
date sysdate to_date 插入从表中查出的数据 方式一 方式二 或者指定列名称 下边这个案例的前提是指定列插入,如果不指定,则也是默认的...
物流系统打单软件 佳易王物流运单怎么打印教程
一、前言 物流系统打单软件 佳易王物流运单怎么打印教程 1、佳易王物流管理系统可同时打印物流单和标签 2、如果一台电脑上有多台打印机,软件可以设置物流或标签对应的打印机,系统自动识别打印机。 二、软件程序图文说明 1、上图为 物流单在空白单上打…...
二叉树计算
题目描述 给出一个二叉树,请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。 输入描述 2行整数&#…...
Java并发执行举例
在Java中实现并发执行可以通过多种方式,最常见的方式包括使用线程、ExecutorService、ForkJoinPool等。以下是几种常用并发执行的示例: 1. 使用Thread类 这是Java中最基础的并发实现,通过创建一个继承自Thread的类或实现Runnable接口来定义…...
Java 基础知识九(网络编程)
UDP DatagramSocket:通讯的数据管道 -send 和receive方法 -(可选,多网卡)绑定一个IP和Port DatagramPacket -集装箱:封装数据 -地址标签:目的地IPPort package org.example.net;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.n…...
深入解析Go语言的类型方法、接口与反射
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 Go语言作为一门现代编程语言,以其简洁高效的特性受到广大开发者的喜爱。在本文中,我们将深入探讨Go语言中的类型方法、接口和反射机制。通过丰富的代码示例和详尽的解释,帮助您全面理解这些关键概念,并在实际…...
C#中线程池【异步】
在 WinForm 项目中,线程池中的线程主要用于执行异步和并发任务。当你调用某些异步方法或使用并行编程时,线程池中的线程就会被使用。 在以下场景中,线程池的线程会被使用: 使用场景 异步任务执行 当你使用 Task.Run() 或 TaskF…...
OpenAI 刚刚推出 o1 大模型!!突破LLM极限
北京时间 9 月 13 日午夜,OpenAI 正式发布了一系列全新的 AI 大模型,专门用于应对复杂问题。 这一新模型的出现代表了一个重要突破,其具备的复杂推理能力远远超过了以往用于科学、代码和数学等领域的通用模型,能够解决比之前更难的…...
【Vmware16安装教程】
📖Vmware16安装教程 ✅1.下载✅2.安装 ✅1.下载 官网地址:https://www.vmware.com/ 百度云盘:Vmware16下载 123云盘:Vmware16下载 ✅2.安装 1.双击安装包VMware-workstation-full-16.1.0-LinuxProbe.Com.exe,点击…...
Delphi5利用DLL实现窗体的重用
文章目录 效果图参考利用DLL实现窗体的重用步骤1 设计出理想窗体步骤2 编写一个用户输出的函数或过程,在其中对窗体进行创建使它实例化步骤3 对工程文件进行相应的修改以适应DLL格式的需要步骤4 编译工程文件生成DLL文件步骤5 在需要该窗体的其他应用程序中重用该窗…...
使用JavaWeb开发注册功能时,校验用户名是否已存在的一个思路(附代码)
在开发 Web 应用程序时,用户注册是一个常见的功能。为了确保每个用户都有一个唯一的用户名,我们需要在用户注册时检查数据库中是否已经存在该用户名。本文将详细介绍如何在 Servlet 中使用 JDBC 技术来检查用户名是否存在。 1. JDBC 简介 Java Databas…...
前端常见面试-首页性能提升、项目优化
首页性能提升 Vue 首页性能提升是Vue应用开发中非常重要的一环,它直接影响用户体验和应用的加载速度。以下是一些关键的Vue首页性能提升策略: 1. 代码分割与懒加载 路由懒加载:利用Webpack的动态导入(import())特性…...
卷王阿里又开启价格战,大模型价格降价85%!
我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 9月19日,就是昨天,一年一度的云计算盛…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
