package com.cdv.agents;
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();
}
}