1

基本上,我只是尝试使用 Java File 类中的 list 函数运行文件夹中所有文件的列表: artistList = (new File(myPathName)).list();

但我得到的是一些丢失的文件,即使在 Windows 7 中“显示隐藏文件”之后也是如此。我想知道这些文件在哪里。

如果有帮助,我正在搜索的路径是我为所有歌曲数据/media组织的文件夹。/media/artist/album/title.mp3我最终找到的额外文件是 AlbumArt jpeg 文件(我事先使用了 songbird 版本 9 来对文件夹进行排序,我只是想用一个小的 Java 程序自己重命名匹配的 ID3 标签)。

4

1 回答 1

0

对于您所描述的组织,您的搜索/列表开始的目录中将没有媒体文件/media,您必须导航到子目录,直到您/media/artist/album从那里到达您可以获取您实际查找的文件。此外,您可能必须向list方法添加过滤器并实现过滤器的接受方法来踢出缩略图和隐藏的元文件。

这里有一段代码(未经测试)可以帮助你

private final static Set<String> mediaExtensions; 

static {
    mediaExtensions = new HashSet<String>();
    mediaExtensions.add(".mp3");
    mediaExtensions.add(".wav");
    mediaExtensions.add(".ogg");
    // and so on
}

public static void list(File file, List<File> result) {
    if(file.isFile()) {
        result.add(file);
    } else if(file.isDirectory()) {
        File files[] = file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                boolean accept = false;
                int i = pathname.getName().lastIndexOf('.');
                if(i != -1) {
                    String ext = pathname.getName().substring(i);
                    accept = (! pathname.isHidden()) &&
                        mediaExtensions.contains(ext);  
                }
                return accept;
            }
        });
        if(files != null) {
            for(File f : files) {
                list(f, result);
            }
        }
    }
}
于 2012-01-06T09:54:23.787 回答