修改文件后缀名的小功能
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");
}
}
}
}
}
---------------------------------------------------------------------------
国之殇,未敢忘!
南京大屠杀!
731部队!
(有关书籍《恶魔的饱食》)以及核污染水排海等一系列全无人性的操作,购买他们的食品和为它们提供帮助只会更加变本加厉的害你,呼吁大家不要购买日本相关产品
昭昭前事,惕惕后人
吾辈当自强,方使国不受他人之侮!
---------------------------------------------------------------------------
作者:三号小玩家
出处:https://www.cnblogs.com/q1359720840/
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 版权信息