Windows 7 中的 Java 文件 API 问题

标签 java windows api fileapi

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

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

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

最佳答案

对于您所描述的组织,搜索/列表开始的目录 /media 中不会有媒体文件,您必须导航子目录,直到到达 /media/artist/相册 从那里您可以获取您实际查找的文件。此外,您可能还需要向 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);
            }
        }
    }
}

关于Windows 7 中的 Java 文件 API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8754393/

相关文章:

api - 如何通过 Coinbase Api v2 发送 ping 通知?

python - 如何从包含代理的 python 中已解析的非 json API 中获取数据?

java - 打印二维矩阵(数组)java

java - 在 Java 中建模数字类型和它们之间的算术运算

java - 安卓 : How to get the value like 04 instead of the 4 during parsing string to Integer?

javascript - YUI 压缩机的命令行选项

windows - 批量加速 Xcopy

c++ - 检查UTF-8是wchar_t还是char?

json - 我的 API 是否应该将 JSON 数据嵌套在父对象中?

Java SAX 解析器 startElement 看不到标签