我正在尝试创建一个程序,该程序可以上传多个文件并将它们的名称和 BPM 标签存储到ArrayList
文件之间以便进行比较。我找到了两个功能来帮助我,但我无法将它们组合起来以获得我需要的功能。
第一个函数采用单个 mp3 文件并将其数据输出到控制台(使用 mp3agic 库):
File file = new File(dataPath("") + "/Song.mp3");
Mp3File mp3file = new Mp3File(file.getPath());
if (mp3file.hasId3v2Tag()) {
ID3v2 id3v2Tag = mp3file.getId3v2Tag();
println("Track: " + id3v2Tag.getTrack());
println("Artist: " + id3v2Tag.getArtist());
println("BPM: " + id3v2Tag.getBPM());
println("Album artist: " + id3v2Tag.getAlbumArtist());
}
第二个函数采用数据路径并输出包含文件夹中文件的名称和信息的目录
void setup() {
String path = "Desktop/mp3folder";
println("Listing all filenames in a directory: ");
String[] filenames = listFileNames(path);
printArray(filenames);
println("\nListing info about all files in a directory: ");
File[] files = listFiles(path);
for (int i = 0; i < files.length; i++) {
File f = files[i];
println("Name: " + f.getName());
println("Is directory: " + f.isDirectory())
println("-----------------------");
}
}
// This function returns all the files in a directory as an array of Strings
String[] listFileNames(String dir) {
File file = new File(dir);
if (file.isDirectory()) {
String names[] = file.list();
return names;
} else {
// If it's not a directory
return null;
}
}
// This function returns all the files in a directory as an array of File objects
// This is useful if you want more info about the file
File[] listFiles(String dir) {
File file = new File(dir);
if (file.isDirectory()) {
File[] files = file.listFiles();
return files;
} else {
// If it's not a directory
return null;
}
}
我试图创建的功能将两者结合起来。我需要第一个函数中的 Artist、Track 和 BPM 来处理目录中的文件数组列表。
任何指导将不胜感激。任何关于另一种方式的建议也将不胜感激。