今天,有人想把项目里面所有的Root文件,里面的文本含有sj 的全部变成FCX,由于文件个数很多,所以写了小例子一次改变。
写得很简单,其中涉及安全,文本大小,编码等都没做处理,修改也写得比较死。
其次:如果要批量修改文件名,批量删除,批量移动位置等等 操作类似,都可以进行改变。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String root = "D:/igo";
dealFile(root);
}
// 改变的文件地址,以及总数
static List<String> list = new ArrayList<String>();
public static void dealFile(String rootPath){
list = getFileDirectory(rootPath);
int count = 0;
for(int i = 0;i<list.size();i++){
rootPath = list.get(i);
writeFile(rootPath,readFile(rootPath));
count = i;
System.out.println("修改的文件有:"+rootPath);
}
System.out.println("总数:"+count);
}
// 获得文本数据
public static String readFile(String filePath){
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
br = new BufferedReader(new FileReader(filePath));
String str = null;
while( (str = br.readLine())!=null && !"".equals(str)){
str = str.replace("sj", "FCX");
sb.append(str);
sb.append("\r\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
// 从写文本数据
public static void writeFile(String filePath,String context){
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(filePath));
bw.write(context);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 获得需要更改的文件目录
public static List<String> getFileDirectory(String rootPath){
File dir = new File(rootPath);
File[] files = dir.listFiles();
String filePaht = null;
for(File f : files){
if(f.isDirectory()){
// 迭代文件目录
getFileDirectory(f.getAbsolutePath());
}else if("Root".equals(f.getName())){
// 获得需要改的文件名字
filePaht = f.getAbsolutePath();
// 路径是xx\xx 格式,转换成xx/xx 格式
filePaht = filePaht.replace("\\", "/");
list.add(filePaht);
}
}
return list;
}
}
希望更多的和我一样的新手,学习,提出更多的要求,我逐渐完善