【问题标题】:Java File API in Windows 7 issueWindows 7 中的 Java File API 问题
【发布时间】:2012-01-06 06:50:50
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否在 Win 7 中使用任何“虚拟文件”和/或库内容?我知道我过去遇到过问题,因为文件的存储位置看起来并不是它们实际存储的位置。
  • 不确定你的意思,但我不认为这些存储在库集中。我把 em 放在 C 盘外的我自己的个人文件夹中。
  • 抱歉,可能误读了您的问题。您是否缺少 list() 调用中的文件,还是列表调用为您提供了您在资源管理器中看不到的额外文件?
  • 啊,没关系,可能是我写错了问题。当我执行 list() 时,而不仅仅是我打开它时看到的所有文件夹,list() 包括一堆我看不到的 AlbumArt jpg 文件。
  • 除了显示隐藏文件之外,您是否尝试过在资源管理器中取消选中“隐藏受保护的操作系统文件”选项?

标签: java windows api fileapi


【解决方案1】:

对于您描述的组织,您的搜索/列表开始的目录/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);
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2011-07-02
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多