文件重命名或替换指定内容
import java.io.BufferedReader; import java.io.CharArrayWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class NameUtils { public static void main(String[] args) throws IOException { System.out.println("请输入项目名称"); @SuppressWarnings("resource") Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println("你输入是:" + str); String projectName = str; String oldName = "city"; if (str.contains(":")) { projectName = str.split(":")[0]; oldName = str.split(":")[1]; } System.out.println("替换" + oldName + "为" + projectName); String projectDir = System.getProperty("user.dir"); System.out.println("项目路径:" + projectDir); File dir = new File(projectDir); for (File file : dir.listFiles()) { String name = file.getName(); if (name.contains(oldName)) { System.out.println("开始重命名"+name); name = name.replace(oldName, projectName); String fileName = projectDir+File.separator+ name; boolean flag = file.renameTo(new File(fileName)); System.out.println(fileName + "重命名结果"+flag); } else if (name.equals("settings.txt")) { System.out.println("开始替换文件内容:"+name); replacTextContent(file.getAbsolutePath(), oldName, projectName); System.out.println("替换文件内容结束:"+name); } } System.out.println("开始重命名文件夹:"+dir.getAbsolutePath()); String target = dir.getParent() + File.separator + projectName; boolean flag = dir.renameTo(new File(target)); System.out.println(target + "重命名文件夹结束:"+ flag); } /** * 替换文本文件中的字符串 * * @param path * @throws IOException */ public static void replacTextContent(String path, String srcStr, String replaceStr) throws IOException { // 读 File file = new File(path); FileReader in = new FileReader(file); BufferedReader bufIn = new BufferedReader(in); // 内存流, 作为临时流 CharArrayWriter tempStream = new CharArrayWriter(); // 替换 String line = null; while ((line = bufIn.readLine()) != null) { // 替换每行中, 符合条件的字符串 line = line.replaceAll(srcStr, replaceStr); // 将该行写入内存 tempStream.write(line); // 添加换行符 tempStream.append(System.getProperty("line.separator")); } // 关闭 输入流 bufIn.close(); // 将内存中的流 写入 文件 FileWriter out = new FileWriter(file); tempStream.writeTo(out); out.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人