老婆的奥迪A6 avant,从我的itunes从把曲库COPY到SD卡,插到媒体播放器后,查看每个专辑中歌曲都是乱序的,想了很多方法都不能解决,最后想到,是不是根据文件创建时间排序的?
于是把整个曲库先COPY到电脑中,格式化SD卡,写了一段程度,按名称排序后吴顺序写入,这样时间和名称排序就对应上了。
package com.company; import java.io.File; import java.nio.file.Files; import java.util.Arrays; import java.util.Comparator; public class Main { public static void main(String[] args) throws Exception{ File rootdir = new File("/Users/axman/DeskTop/music"); //曲库目录 String distroot = "/Volumes/Ercui-SD/"; //SD卡 File[] subdirs = rootdir.listFiles(); //歌手目录 Arrays.sort(subdirs, new Comparator<File>() { @Override public int compare(File o1, File o2) { return o1.getName().compareTo(o2.getName()); } }); for (File sub : subdirs) { if (sub.isDirectory()) { File[] sets = sub.listFiles(); //专辑目录 Arrays.sort(sets, new Comparator<File>() { @Override public int compare(File o1, File o2) { return o1.getName().compareTo(o2.getName()); } }); for (File set : sets) { if (set.isDirectory()) { File distdir = new File(distroot + sub.getName() + "/" + set.getName()); System.out.println(distdir.getPath()); distdir.mkdirs(); //在SD卡上创建歌手目录 File[] musices = set.listFiles(); Arrays.sort(musices, new Comparator<File>() { @Override public int compare(File o1, File o2) { return o1.getName().compareTo(o2.getName()); } }); for (File music : musices) { //Copy file to dist/ File distfile = new File(distdir, music.getName()); Files.copy(music.toPath(),distfile.toPath()); //文件COPY到SD卡上 Thread.sleep(1); //防止同一毫秒COPY两个文件 } } } } } } }
然后把SD卡重新插到车上,重新打开,哈哈,一切如愿以偿。