Java 抓取文件夹中的特定文件

Java 抓取文件夹中的特定文件,java,Java,我试图抓取文件夹中的所有mkv文件并将它们的名称放入数组中,但由于某种原因,我的代码只返回一个值。我认为FilenameFilter()将返回所有适当的值,而不仅仅是它遇到的第一个条目 //Get a list of all mkv files in the extraction folder File file = new File(extractedFolder); File[] listoffiles = file.listFiles(new FilenameFilter() {

我试图抓取文件夹中的所有mkv文件并将它们的名称放入数组中,但由于某种原因,我的代码只返回一个值。我认为FilenameFilter()将返回所有适当的值,而不仅仅是它遇到的第一个条目

//Get a list of all mkv files in the extraction folder
File file = new File(extractedFolder);
File[] listoffiles = file.listFiles(new FilenameFilter() {
        public boolean accept(File file, String name) {
            return name.toLowerCase().endsWith(".mkv");
        }
});
我需要迭代这段代码吗?我的数组是否仅设置为处理一个条目?这是我在这段代码中看到的仅有的两个潜在问题,但在我看来这两个问题都很好

也是我正在使用的资源

编辑:我的文件结构将所有内容都放在同一个文件夹中。该文件夹地址是

C:\Users\user1\Documents\folder1\extraction files.  
在“extraction files”文件夹中,有27个mkv文件和28个xml文件(见图)。我上面给出的代码一次只能提取12个文件。最初创建阵列时是否需要指定一个数字

编辑2
使用这个资源(),我意识到我用来解压文件的缓冲区(在用上面的代码获取文件之前)正在填充并终止这个过程。本质上,问题在于使用运行时()而不是ProcessBuilder()(它可以防止cmd缓冲区溢出)。问题解决了

我已经在下面剪切粘贴了我的文件扫描代码。我看不出你的版本有什么问题,但希望这会有所帮助。这种方式有点不同,希望能在您的系统中工作

    // FYI, m_dir is of type Path
    File dir = m_dir.toFile();

    if(dir.isDirectory())
    {
        for(File f : dir.listFiles())
        {
            // you probably want to replace the 2 lines below
            // with a check for .mkv files + processing
            logger.debug("File " + f.getName() + " found during inital search");
            m_listener.fileFoundInitialScan(f);
        }
    }
Use可以在中使用FileUtils为您处理此问题


使用以下方法:

这应该有效。你的文件可能有问题。你们能不能循环一下,看看结果是否不同。同意这似乎是正确的。该目录可能只包含一个
.mkv
文件。看起来你真的需要添加一个断点,看看目录
extractedFolder
指的是什么。我刚刚测试了你的代码。对我来说工作正常。请尝试接受所有文件,并检查它是否确实列出了您期望的所有文件。是否所有MKV文件都存在于顶级解压缩文件夹中?或者顶层文件夹只有一个文件,而其余文件可能位于提取文件夹的子文件夹中?在这种情况下,您可能希望递归遍历目录以获取所有必需的mkv文件。谢谢您的想法。我做了一个干净的构建,代码开始奇迹般地工作(这毫无意义,因为我认为我几天前就这么做了)。如果问题再次出现,我一定会试试这个。