本帖最后由 风中飘荡的沙 于 2022-5-8 21:40 编辑
问题已解决,下面提供一下修改完毕的代码,代码写的比较冗杂,有需要的朋友可自取。
传输链接:https://cowtransfer.com/s/6bfd8e7d8a9a43 或 打开【奶牛快传】cowtransfer.com 使用传输口令:lpvea6 提取;
————————分割线————————
这个是我自己写的一个小程序,用于将”艺人-歌曲名“的格式重命名为”歌曲名-艺人“,使用过程中发现有一些文件无法修改文件名且程序不报错,不知道是什么原因,求大神解答,多谢!下面是代码,后附源文件及可执行jar
[Java] 纯文本查看 复制代码 import org.apache.commons.io.FilenameUtils;
import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.AudioHeader;
import org.jaudiotagger.audio.exceptions.CannotReadException;
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
import org.jaudiotagger.audio.flac.FlacFileReader;
import org.jaudiotagger.audio.mp3.MP3AudioHeader;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.audio.mp3.MP3FileReader;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.TagException;
import org.jaudiotagger.tag.id3.AbstractID3v2Frame;
import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
import org.jaudiotagger.tag.id3.framebody.FrameBodyAPIC;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class test {
public static void main(String[] args) throws CannotReadException, TagException, InvalidAudioFrameException, ReadOnlyFileException, IOException {
//关闭jAudioTagger的控制台输出
Logger[] pin = new Logger[]{Logger.getLogger("org.jaudiotagger")};
for (Logger l : pin)
l.setLevel(Level.OFF);
int count = 0;
List<File> fileList = new ArrayList<File>();
String path = System.getProperty("user.dir");
File file = new File(path);
File[] files = file.listFiles();
for (File f:files) {
String fileName = f.getName();
String suffix = FilenameUtils.getExtension(fileName);
if(suffix.equals("mp3")){
MP3FileReader mp3Reader = new MP3FileReader();
AudioFile mp3 = mp3Reader.read(f);
Tag tag = mp3.getTag();
String musicName = tag.getFirst(FieldKey.TITLE);
if(!isMatch(musicName, fileName)){
String name = f.getParent() + "\\" + musicName + " - " + tag.getFirst(FieldKey.ARTIST) + ".mp3";
f.renameTo(new File(name));
System.out.println("文件 "+musicName + " - " + tag.getFirst(FieldKey.ARTIST)+" 已重命名完成");
count++;
}
}else if(suffix.equals("flac")){
FlacFileReader reader = new FlacFileReader();
AudioFile flac = reader.read(f);
Tag tag = flac.getTag();
String musicName = tag.getFirst(FieldKey.TITLE);
if(!isMatch(musicName, fileName)){
String name = f.getParent() + "\\" + musicName + " - " + tag.getFirst(FieldKey.ARTIST) + ".flac";
f.renameTo(new File(name));
System.out.println("文件 "+musicName + " - " + tag.getFirst(FieldKey.ARTIST)+" 已重命名完成");
count++;
}
}
}
System.out.println("共修改文件"+count+"个");
}
static boolean isMatch(String pattern, String res){
int p = pattern.length();
int r = res.length();
for(int i = 0; i < p; i++){
if(!(pattern.charAt(i) == res.charAt(i)))
return false;
}
return true;
}
}
源文件: https://cowtransfer.com/s/6d4551e1763047 或 打开【奶牛快传】cowtransfer.com 使用传输口令:dysuus 提取;
部分无法重命名文件: https://cowtransfer.com/s/2242a906e55141 或 打开【奶牛快传】cowtransfer.com 使用传输口令:mv4n65 提取;
|