最近下了一本有声小说,文件名称是每一集的集数,但标题全是网址,放到手机音乐播放器名称显示的是标题,完全看不出是哪一集,200多集如果一集一集改怕是手得废掉,想用代码解决便baidu了一下,倒是有不少可以获取mp3文件信息的代码,修改的就查到一个,结果那人折腾了半天还是让你用 windows的属性->详细信息 去修改,瞬间无语不知道这老兄写这篇文章干啥,最终google了一下,终于让我找到了方法,给各位分享一下
一、引包
<dependency>
<groupId>com.mpatric</groupId>
<artifactId>mp3agic</artifactId>
<version>0.9.1</version>
</dependency>
二、修改信息代码
import com.mpatric.mp3agic.*;
import java.io.File;
import java.io.IOException;
/**
* 获取、修改mp3文件信息
*
* @author gsdcr
*/
public class Mp3Demo {
/**
* 原来文件存放位置
*/
public static String originPath = "C:/文件/原来/";
/**
* 新文件存放位置
*/
public static String targetPath = "C:/文件/目标/";
public static void main(String[] args) throws InvalidDataException, IOException, UnsupportedTagException, NotSupportedException {
File parentFile = new File(originPath);
File targetFile = new File(targetPath);
// 创建新文件父目录
targetFile.mkdirs();
// 获取原来所有文件
File[] files = parentFile.listFiles();
for (File file : files) {
// 创建 Mp3File 对象
Mp3File mp3file = new Mp3File(file);
// 获取文件名
String fileName = file.getName();
// 获取ID3v2对象,通过该对象可以获取文件信息如标题、艺术家等内容
ID3v2 id3v2Tag = mp3file.getId3v2Tag();
// 将文件名去除扩展名作为新的标题
String newTitle = fileName.substring(0, fileName.lastIndexOf("."));
// 简单打印一下
System.out.println(id3v2Tag.getTitle() + "->" + newTitle);
// 修改标题
id3v2Tag.setTitle(newTitle);
// 修改艺术家
id3v2Tag.setArtist("zhy");
// 修改唱片集
id3v2Tag.setAlbum("ysj");
// 将修改后的文件保存到新的目录
mp3file.save(targetPath + fileName);
}
}
}
三、处理前后对比
处理前.png
处理后.png
四、附录
- mp3agic包github地址
http://github.com/mpatric/mp3agic