从网上下了些脱口秀mp3,准备回家的时候在路上听听。

下载之后发现文件名都是以“某某网整理”开头,导入到手机之后歌名长得连有用的信息都看不到了。

不想一个个改了,于是敲了几行java,来了个批量重命名,有循环就是好啊!

package file;import java.io.File;public class ChangeFileName {public static void main(String[] args) {// TODO Auto-generated method stubString parentDir="E:\\<span style="font-family:Microsoft YaHei;">脱口秀</span>\\2014\\";File parent=new File(parentDir);File[] files=parent.listFiles();for (int i = 0; i < files.length; i++) {String oldName=files[i].getName();String newName=oldName.replace("【鸿新网www.hhxin.com整理】<span style="font-family:Microsoft YaHei;">脱口秀第</span>","");newName=newName.replace("<span style="font-family:Microsoft YaHei;">期</span>:", "");files[i].renameTo(new File(parentDir+newName));}}
}

可是再次导入到播放器之后,尼玛居然还是有“某某网整理”!

用windows资源管理器看看属性,发现原来“标题”才是显示在播放器中的歌名。

于是Google了一下怎样用代码修改这破属性,发现那些信息是写在MP3尾部(ID3v1)以及头部的(ID3v2)。

找到一个可以修改尾部信息的代码

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;/*** 获得MP3文件的信息* */
public class Test {public static void main(String[] args) {//TODO 演示File MP3FILE = new File("test.mp3");try {Test info = new Test(MP3FILE);info.setCharset("UTF-8");System.out.println(info.getSongName());System.out.println(info.getArtist());System.out.println(info.getAlbum());System.out.println(info.getYear());System.out.println(info.getComment());} catch (IOException e) {e.printStackTrace();}}private String charset = "utf-8";//解析MP3信息时用的字符编码private byte[] buf;//MP3的标签信息的byte数组/*** 实例化一个获得MP3文件的信息的类* @param mp3 MP3文件* @throws IOException 读取MP3出错或则MP3文件不存在*/public Test(File mp3) throws IOException{buf = new byte[128];//初始化标签信息的byte数组RandomAccessFile raf = new RandomAccessFile(mp3, "r");//随机读写方式打开MP3文件raf.seek(raf.length() - 128);//移动到文件MP3末尾raf.read(buf);//读取标签信息raf.close();//关闭文件if(buf.length != 128){//数据是否合法throw new IOException("MP3标签信息数据长度不合法!");}}/*** 获得目前解析时用的字符编码* @return 目前解析时用的字符编码*/public String getCharset() {return charset;}/*** 设置解析时用的字符编码* @param charset 解析时用的字符编码*/public void setCharset(String charset) {this.charset = charset;}public String getSongName(){try {return new String(buf,3,30,charset).trim();} catch (UnsupportedEncodingException e) {return new String(buf,3,30).trim();}}public String getArtist(){try {return new String(buf,33,30,charset).trim();} catch (UnsupportedEncodingException e) {return new String(buf,33,30).trim();}}public String getAlbum(){try {return new String(buf,63,30,charset).trim();} catch (UnsupportedEncodingException e) {return new String(buf,63,30).trim();}}public String getYear(){try {return new String(buf,93,4,charset).trim();} catch (UnsupportedEncodingException e) {return new String(buf,93,4).trim();}}public String getComment(){try {return new String(buf,97,28,charset).trim();} catch (UnsupportedEncodingException e) {return new String(buf,97,28).trim();}}}

尼玛居然现在的MP3都使用了存储信息量大的ID3v2,而且信息的长度都不固定,这让我怎么找到id="TIT2"的数据帧啊!

阅读了不知多少时间的id3v2.3文档之后,我TM终于受不了了!

于是我打开资源管理器,全选音频,进入属性页,

然后愉快地把标题的值改为空,确定之后所有的标题就都被我改为空啦!

没有标题的话播放器就会把文件名当成歌名的。

就是这么简单!放着写好的接口你不去调用,真TM的无聊。。。。。。

Java--语言应用--批量修改MP3的文件名、标题相关推荐

  1. 批量修改mp3文件的title等

    批量修改mp3文件的title等 不是改文件名哦: 下载地址:https://mp3tag.en.softonic.com/ 帮助文档:file:///C:/Program%20Files%20(x8 ...

  2. kjb文件 解析_批量修改MP3文件信息

    前两天本人在整理自己的歌单时(题外话,本人是一个热衷音乐的程序员噢,哈哈),发现之前下载的很多MP3文件里的歌手,标题等信息对不上,很多都是错的.对于患有"强迫症"的本人来说,当然 ...

  3. java使用递归批量修改文件扩展名

    文章目录 一.文章参考 二.问题说明 三.解决办法 3.1 bat 批处理 一个文件夹 3.2 使用java递归修改文件夹下的文件扩展名 一.文章参考 java使用递归批量修改文件扩展名 二.问题说明 ...

  4. 批量修改MP3、Flac等格式音频文件的属性

    批量修改mp3.flac的属性.在播放器播放MP3时候,文件的title.artist等信息需要正确设置才能产生last.fm的播放记录.本工具可以按照简单的规律,批量设置文件的属性. 第二版

  5. Python3.根据ID3v2批量修改mp3文件名

    我听歌并不专业,没有特定的口味,没有特定的播放软件,于是,随着换手机.换电脑.重装系统.朋友分享等等,我有了一堆mp3文件,而且越聚越多. 由于这些文件来源就乱七八糟的,文件名的格式有的是" ...

  6. Python 使用mutagen批量修改MP3标签信息

    以下代码仅供业余爱好参考,不涉及音频专业知识. 说明: 听歌时,想着修改一下mp3的标签信息,但是歌曲很多不可能一个个的修改. 下载了一个Mp3tag软件,添加封面还是可以,但是批量修改标题只能清空等 ...

  7. java项目:批量修改文件名字

    代码如下: import java.io.File; //导入io.File public class test {public static void main(String[] args) {// ...

  8. 批量修改文件夹/文件名的小技巧

    本文以  修改某文件夹内所有文件的文件名 为例 1.获取原文件名 法①:ctrl+A全选文件,鼠标右击,点击"复制文件地址",复制到excel表中,去掉地址前缀,仅保留文件名(保留 ...

  9. Python判断文件名并批量修改成指定文件名

    1.需求 目标文件名已经匹配了数据库中姓名对应的ID,原始文件夹中的文件名需要修改带上唯一ID,以匹配路径数据 2.实现代码: import os#需要改名的文件所在的目录 path = " ...

最新文章

  1. 基于FFmpeg和Android的音视频同步播放实现
  2. Intellij IDEA2019项目包分层结构显示设置
  3. word_cloud
  4. DOM包裹wrap()方法
  5. 【广州/深圳 活动】 MVP社区巡讲
  6. python在win7中不能运行_Python3.6在win7中无法正常运行的问题
  7. c++编写手机小游戏代码_玩过自己开发的贪吃蛇吗?点这里,教你用Python写一个贪吃蛇小游戏!(附源代码)...
  8. oracle hcm 发展,甲骨文发布Oracle HCM Cloud云服务 呈现三大亮点
  9. 【重学计算机】计组D1章:计算机系统概论
  10. 408计算机考研2012真题解析,2018年计算机408统考考研真题及答案解析.pdf
  11. 计算机毕业设计之 [含论文+答辩PPT+任务书+中期检查表+源码等]S2SH动漫论坛[包运行成功]
  12. 地址栏中输入IP地址提示指定的网络名不再可用的解决方法
  13. 电脑版微信多开显示网络代理服务器,电脑版微信多开办法,超级简单,一看就会...
  14. 一个数如果恰好等于它的因子之和,这个数就成为“完数”。 例如,28的因子为1,2,4,7,14。而28=1+2+4+7+14,因此28是“完数”。编程找出1000之内的所有完数,并按下面格
  15. CNTV获首张互联网电视牌照
  16. 互联网大佬扎堆出书 不为赚钱只为粉丝
  17. python语言所使用的特殊含义符号_Python3 正则表达式特殊符号及用法
  18. 韦东山freeRTOS系列教程之【第十章】软件定时器(software timer)
  19. 【实践】多条曲线在一幅图上,Origin如何对每一条曲线单独设置
  20. 如何设置select-option的多项起始默认值

热门文章

  1. 【PMP】敏捷项目月报模板
  2. 计算机应用与基础性考实训题答案,《计算机应用基础与实训》 考证练习题09年.pdf...
  3. 计算机毕业设计SpringBoot选题推荐 学生档案管理系统 高校档案管理系统
  4. HTML a 标签 (修改样式,链接邮箱Email地址)
  5. [附源码]Nodejs计算机毕业设计洗浴管理系统Express(程序+LW)
  6. 捷径系统-健身房管理系统怎么选择?
  7. 神策 sensor官网简介以及各个指标简介
  8. 在 macOS 下使用 PHP-version 切换 PHP 版本
  9. IP地址与子网掩码(扫盲)
  10. linux kernal map