1.实现以下功能,将mp3改为flac
2.名称重复的删除掉,包括秋名山的老司基 - 从你的全世界路过 (插曲扒带版本).mp3 秋名山的老司基 - 从你的全世界路过 (插曲扒带版本)(1).mp3,最终保留的只有这一个/root/音乐/秋名山的老司基 - 从你的全世界路过 (插曲扒带版本).flac
3.如果有 flac和mp3同名的情况下,删除mp3保留flac
拿到xx下所有的文件名。
枚举名称包括(x数字).mp3或者(x数字).flac或者(副本).mp3如果有此字眼,直接删除这个文件。
第二遍就直接创建两个map
一个是flacmap 存放所有flac ,另一个存放mp3,另外在flac中进行conketkey如果有,直接不保存这个map的数据,并且删除掉这个文件。
最后,留下来的只有mp3中剩下可以用的,遍历mp3的map,然后修改文件名即可。
import java.io.File;
import java.util.HashMap;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author player3
*/
public class FileTodo {
public static void main(String[] args) {
// 拿到xx下所有的文件名。
// 枚举名称包括(x数字).mp3或者(x数字).flac或者(副本).mp3如果有此字眼,直接删除这个文件。
//
// 第二遍就直接创建两个map
// 一个是flacmap 存放所有flac ,另一个存放mp3,另外在flac中进行conketkey如果有,直接不保存这个map的数据,并且删除掉这个文件。
// 最后,留下来的只有mp3中剩下可以用的,遍历mp3的map,然后修改文件名即可。
//选择根目录
String targetDirectory="/root/音乐";
//搞成文件格式
File file = new File(targetDirectory);
//拿到所有文件名
String[] list = file.list();
//匹配(1-n)|(复件)
String pattern="[\\((][1-9][0-9]{0,}[\\))]|\\u590d\\u4ef6";
for (int i = 0; i < Objects.requireNonNull(list).length; i++) {
String text= list[i];
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(text);
if(m.find()){
//找到删除
File delfile = new File(targetDirectory +File.separator+ text);
boolean delete = delfile.delete();
System.out.println(delete);
}
}
HashMap<String, String> flacMap = new HashMap<>(16);
String[] newList = file.list();
for (int i = 0; i < Objects.requireNonNull(newList).length; i++) {
String newName = newList[i];
if(newName.contains("flac")){
//flac
flacMap.put(newName.substring(0,newName.indexOf(".flac")),"flac");
}else{
//mp3的进行判断key是否存在,如果存在直接删除,不存在添加到后面的map
if(flacMap.containsKey(newName.substring(0,newName.indexOf(".mp3")))) {
//不存在需要进行转flac,存在则删除
File delFile = new File(targetDirectory+File.separator+ newName);
boolean delete = delFile.delete();
System.out.println(newName+"删除是否成功:"+delete);
}else{
//获取前缀
String renamefileString = newName.substring(0, newName.indexOf(".mp3"));
//打开文件
File updateNameFile = new File(targetDirectory+File.separator+ newName);
//要修改的名称
File renamefile = new File(targetDirectory + File.separator + renamefileString + ".flac");
boolean flag = updateNameFile.renameTo(renamefile);
System.out.println(flag);
flacMap.put(renamefileString,"flac");
}
}
}
}
}
对两个循环进行合并
import java.io.File;
import java.util.HashMap;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author player3
*/
public class FileTodo {
public static void main(String[] args) {
// 拿到xx下所有的文件名。
// 枚举名称包括(x数字).mp3或者(x数字).flac或者(副本).mp3如果有此字眼,直接删除这个文件。
//
// 第二遍就直接创建两个map
// 一个是flacmap 存放所有flac ,另一个存放mp3,另外在flac中进行conketkey如果有,直接不保存这个map的数据,并且删除掉这个文件。
// 最后,留下来的只有mp3中剩下可以用的,遍历mp3的map,然后修改文件名即可。
//选择根目录
String targetDirectory="/root/音乐";
//搞成文件格式
File file = new File(targetDirectory);
//拿到所有文件名
String[] list = file.list();
//匹配(1-n)|(复件)
String pattern="[\\((][1-9][0-9]{0,}[\\))]|\\u590d\\u4ef6";
HashMap<String, String> flacMap = new HashMap<>(32);
for (int i = 0; i < Objects.requireNonNull(list).length; i++) {
String text= list[i];
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(text);
if(m.find()){
//找到删除
File delfile = new File(targetDirectory +File.separator+ text);
boolean delete = delfile.delete();
System.out.println(delete);
}
String newName =text;
if(newName.contains("flac")){
//flac
flacMap.put(newName.substring(0,newName.indexOf(".flac")),"flac");
}else{
//mp3的进行判断key是否存在,如果存在直接删除,不存在添加到后面的map
if(flacMap.containsKey(newName.substring(0,newName.indexOf(".mp3")))) {
//不存在需要进行转flac,存在则删除
File delFile = new File(targetDirectory+File.separator+ newName);
boolean delete = delFile.delete();
System.out.println(newName+"删除是否成功:"+delete);
}else{
//获取前缀
String renamefileString = newName.substring(0, newName.indexOf(".mp3"));
//打开文件
File updateNameFile = new File(targetDirectory+File.separator+ newName);
//要修改的名称
File renamefile = new File(targetDirectory + File.separator + renamefileString + ".flac");
boolean flag = updateNameFile.renameTo(renamefile);
System.out.println(flag);
flacMap.put(renamefileString,"flac");
}
}
}
}
}