Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows7中的Java文件API问题_Java_Windows_Api_Fileapi - Fatal编程技术网

Windows7中的Java文件API问题

Windows7中的Java文件API问题,java,windows,api,fileapi,Java,Windows,Api,Fileapi,基本上,我只是尝试使用Java File类中的list函数运行文件夹中所有文件的列表: artistList=(新文件(myPathName)).list() 但我得到的是一些丢失的文件,即使我在Windows7中“显示隐藏的文件”。我想知道这些文件在哪里 如果有帮助的话,我正在搜索的路径是一个类似于/media的文件夹,我已将其组织到/media/artist/album/title.mp3中,用于查找我的所有歌曲数据。我最终找到的额外文件是AlbumArt jpeg文件(我之前使用了song

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

但我得到的是一些丢失的文件,即使我在Windows7中“显示隐藏的文件”。我想知道这些文件在哪里


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

对于您描述的组织,搜索/列表开始的目录
/media
中将不会有媒体文件,您必须导航trought子目录,直到您到达
/media/artist/album
,从那里您可以获得实际查找的文件。此外,您可能还需要向
列表
方法添加一个过滤器,并实现过滤器的accept方法来清除缩略图和隐藏的元文件

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

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);
            }
        }
    }
}
私有最终静态集mediaExtensions;
静止的{
mediaExtensions=新的HashSet();
添加(“.mp3”);
添加(“.wav”);
添加(“.ogg”);
//等等
}
公共静态无效列表(文件、列表结果){
if(file.isFile()){
结果.添加(文件);
}else if(file.isDirectory()){
File files[]=File.listFiles(新文件过滤器(){
@凌驾
公共布尔接受(文件路径名){
布尔接受=假;
int i=pathname.getName().lastIndexOf('.');
如果(i!=-1){
字符串ext=pathname.getName().substring(i);
accept=(!pathname.ishiden())&&
mediaExtensions.contains(ext);
}
退货接受;
}
});
如果(文件!=null){
用于(文件f:文件){
清单(f,结果);
}
}
}
}

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