只是为了我自己的学习,我试图在我的音乐收藏中找到所有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;
}
apatche commons-io的FileUtils具有一个listFiles方法,该方法应该可以满足您的需求。
该方法采用两个IOFileFilter实例,您可以使用它们来过滤文件(在您的情况下为mp3文件)并过滤子目录(以便您可以控制要包括在搜索中的目录)。
为了使您的代码正常工作,只需更改numberOfUntaggedTracks(x.getPath());
为untaggedTracks += numberOfUntaggedTracks(x.getPath());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句