分享一个批量修改文件夹下文件种相似的内容
节省重复劳动的时间
package UpdateFile;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class ModifyFile {
public static void main(String[] args){
//文件夹路径
List<String> filesPath=getFilesPath("D:\\shell\\sqlpy");
List<String> files=getFiles("D:\\shell\\sqlpy");
Map<String,String> modifyMap=new LinkedHashMap<>();
//重复的内容为Key值,value值为修改的内容
modifyMap.put("","");
modifyFiles(filesPath,modifyMap,files);
}
/**
* 获取路径下的文件
* @param path
* @return
*/
public static List<String> getFilesPath(String path) {
File file = new File(path);
File[] tempList = file.listFiles();
List<String> filesPath =recursiveFilePath(tempList);
return filesPath;
}
/**
* 获取文件名
* @param path
* @return
*/
public static List<String> getFiles(String path) {
File file = new File(path);
File[] tempList = file.listFiles();
List<String> files =recursiveFile(tempList);
return files;
}
public static List<String> recursiveFile(File[] tempList){
List<String> files = new ArrayList<String>();
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
files.add(tempList[i].getName());
//文件名,不包含路径
// System.out.println(tempList[i].getName());
}
if (tempList[i].isDirectory()) {
//递归
files.addAll(recursiveFile(tempList[i].listFiles()));
}
}
return files;
}
public static List<String> recursiveFilePath(File[] tempList){
List<String> filesPath = new ArrayList<String>();
for (int i = 0; i < tempList.length; i++) {
if (tempList[i].isFile()) {
filesPath.add(tempList[i].toString());
//文件名,包含路径
// System.out.println(tempList[i].toString());
}
if (tempList[i].isDirectory()) {
//递归
filesPath.addAll(recursiveFilePath(tempList[i].listFiles()));
}
}
return filesPath;
}
/**
*
* @param filesPath 文件路径
* @param modifyMap 修改数据map
* @param files 文件名
*/
public static void modifyFiles(List<String> filesPath, Map<String,String> modifyMap,List<String> files) {
for (int i = 0; i < filesPath.size(); i++) {
List<String> newLines = new ArrayList<>();
String filePath = filesPath.get(i);
try {
for (String line : Files.readAllLines(Paths.get(filePath), StandardCharsets.UTF_8)) {
for (Map.Entry<String, String> entry : modifyMap.entrySet()) {
if (line.contains(entry.getKey())) {
line = line.replace(entry.getKey(),entry.getValue());
}
}
newLines.add(line);
}
Files.write(Paths.get(filePath), newLines, StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}