仅仅是为了我自己的学习,我试图找到我的音乐收藏中的所有mp3文件,并找到所有没有id3v2标签的曲目。我的代码给了我有关我指定的目录的信息,但它不查找子目录中的mp3文件。虽然我可以看到它识别目录,因为我可以打印出来。请参阅下面的代码。如果代码的格式不正确,我很抱歉。我是盲人,使用屏幕阅读器,我不能轻易访问本网站上的格式化程序。
public static int numberOfUntaggedTracks(String directory) throws UnsupportedTagException, InvalidDataException, IOException {
int untaggedTracks = 0;
File f = new File(directory);
File l[] = f.listFiles();
for (File x: l) {
if (x.isHidden() || !x.canRead())
continue;
if (x.isDirectory()) {
System.out.println("testing" + x.getPath());
numberOfUntaggedTracks(x.getPath());
} else if (x.getName().endsWith(".mp3")) {
Mp3File song = new Mp3File(x.getPath());
if (song.hasId3v1Tag() == false) {
untaggedTracks++;
}
//end of else if checking for .mp3 extension
}
//end of for loop
}
return untaggedTracks;
}
答案 0 :(得分:0)
来自apatche commons-io的FileUtils有一个listFiles方法,可以满足你的需要。
该方法需要两个IOFileFilter实例,您可以使用这些实例来过滤文件(在您的情况下为mp3文件)并过滤子目录(这样您就可以控制在搜索中包含哪些目录)。
要使代码正常工作,只需将numberOfUntaggedTracks(x.getPath());
更改为untaggedTracks += numberOfUntaggedTracks(x.getPath());