网络下载的歌曲里面很多的标题和作者都没有,或者是乱写的。音乐播放软件默认会去取这些标签的信息展示。

本文利用jaudiotagger包的AudioFile,进行for循环修改。
- 引包
<dependency>
<groupId>org</groupId>
<artifactId>jaudiotagger</artifactId>
<version>2.0.3</version>
</dependency>
- java代码
import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.flac.FlacFileReader;
import org.jaudiotagger.audio.mp3.MP3FileReader;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import java.io.File;
public class MyUtil {
public static void main(String[] args) {
File yFile = new File("E:\\音乐");
File[] files = yFile.listFiles();
for (File file : files) {
if (file.isDirectory()) {
continue;
}
String fName = file.getName();
try {
set(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void set(File file) throws Exception {
String fName = file.getName();
String type = fName.substring(fName.lastIndexOf(".") + 1);
AudioFile audioFile;
FlacFileReader flacFileReader = new FlacFileReader();
MP3FileReader mp3FileReader = new MP3FileReader();
if (type.equalsIgnoreCase("mp3")) {
audioFile = mp3FileReader.read(file);
} else if (type.equalsIgnoreCase("flac")) {
audioFile = flacFileReader.read(file);
} else {
return;
}
String authorAndMusicName = fName.substring(0, fName.lastIndexOf("."));
String musicName = authorAndMusicName.substring(fName.lastIndexOf("-") + 2);
String author = authorAndMusicName.substring(0, fName.lastIndexOf("-") - 1);
System.out.println(authorAndMusicName);
System.out.println(musicName);
System.out.println(author);
Tag tag = audioFile.getTag();
tag.deleteField(FieldKey.TITLE);
tag.addField(FieldKey.TITLE, musicName);
tag.deleteField(FieldKey.COMMENT);
tag.addField(FieldKey.COMMENT, authorAndMusicName);
tag.deleteField(FieldKey.ARTIST);
tag.addField(FieldKey.ARTIST, author);
tag.deleteField(FieldKey.ALBUM);
tag.setField(FieldKey.ALBUM, musicName);
audioFile.setTag(tag);
audioFile.commit();
}
}
- FieldKey里有更多音频标签信息,可以自行探索