原是用来车载导航上的音乐播放,导航内置播放算法都是固定的,只能通过MP3文件排序来实现随机播放。
当然,有的导航是通过ID3标签来排序,不做研究,以下是通用MP3文件名排序方法,其实很简单,只是给我自己留存一份代码
package test;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* 音乐、视频文件排序工具
*
*/
public class MusicFileOrderListFinal {
public static void main(String[] args) {
args = new String[] { "C:\\Users\\wilkey\\Music\\周杰伦" };
int i = 0;
long time = System.currentTimeMillis() - 3600 * 1000;
if (args == null || args.length == 0) {
System.out.println("USAGE:java MusicFileOrderListFinal 目录1 目录2 目录3");
} else {
String[] dirList = args;
// 测试使用代码
// String[] dirList = { "F:\\迅雷下载\\歌曲备份\\test1",
// "F:\\迅雷下载\\歌曲备份\\test2",
// "F:\\迅雷下载\\歌曲备份\\test3", "F:\\迅雷下载\\歌曲备份\\test4" };
for (int m = 0; m < dirList.length; m++) {
System.out.println("---------" + dirList[m] + "----------");
File dirFile = new File(dirList[m]);
if (dirFile.exists() && dirFile.isDirectory()) {
File[] fileList = dirFile.listFiles();
List<File> lists = Arrays.asList(fileList);
Collections.shuffle(lists); //每次随机排序
for (File file : lists) {
i++;
file.setLastModified(time - i * 1000);
System.out.println(file.lastModified() + "----" + file.getName());
// 获取新文件名
String fileName = file.getName();
if (fileName.length() > 3) {
String prefix = fileName.substring(0, 3);
if (prefix.matches("^\\d{3}$")) {
fileName = fileName.substring(3);
}
}
String newFileName = String.format(("%03d " + fileName.trim()), i);
// 重命名
file.renameTo(new File(dirList[m] + File.separator + newFileName));
}
}
}
// 目录排序
for (int m = 0; m < dirList.length; m++) {
File dirFile = new File(dirList[m]);
dirFile.setLastModified(time - m * 120 * 1000);
}
}
}
}
Comments | NOTHING