FileRenamer
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FileRenamer {
private static final Logger logger = LoggerFactory
.getLogger(MethodHandles.lookup().lookupClass());
public static void rename(Path path,Map<String,String> filterMap) {
try(Stream<Path> stream = Files.walk(path)){
stream.forEach(filePath -> {
Path oldPath = filePath.getFileName();
String fileName = oldPath.toString();
for (Map.Entry<String,String> entry : filterMap.entrySet()) {
if (fileName.contains(entry.getKey())) {
fileName = fileName.replace(entry.getKey(),entry.getValue());
}
}
Path newPath = filePath.getParent().resolve(fileName);
logger.info("filePath:{},newPath:{}",filePath,newPath);
try {
Files.move(filePath,newPath,StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
}
});
}catch(IOException e){
e.printStackTrace();
}
}
}
测试
- 外交风云.01.2019.2160p.WEB-DL.HEVC.AAC.mp4 => 01.mp4
public static void main(String[] sa) {
Path path = Path.of("E:/外交风云 2019 2160");
Map<String,String> filterMap = new HashMap<>();
filterMap.put(".2019.2160p.WEB-DL.HEVC.AAC","");
filterMap.put("外交风云.","");
filterMap.put("","");
FileRenamer.rename(path, filterMap);
}