mp3音乐排序

发布于 2016-11-22  33.32k 次阅读


原是用来车载导航上的音乐播放,导航内置播放算法都是固定的,只能通过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);
			}
		}
	}
}