0

我试图获取一个文件夹中的所有 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");
        }
});

我需要遍历这段代码吗?我的阵列是否仅设置为处理一个条目?这是我在这段代码中看到的仅有的两个潜在问题,但在我看来,这两个问题都很好。

Java:在指定文件夹中查找 .txt 文件也是我正在使用的资源。

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

C:\Users\user1\Documents\folder1\extraction files.  

在“提取文件”文件夹内,有 27 个 mkv 文件和 28 个 xml 文件(见图)。我上面给出的代码一次只提取 12 个文件。最初创建数组时是否需要指定一个数字?

在此处输入图像描述

编辑 2 使用此资源(Java 进程 - 无法解压缩 zip 文件),我意识到我用来解压缩文件的缓冲区(在使用上面的代码抓取它们之前)正在填满并终止进程。本质上,问题在于使用 Runtime() 而不是 ProcessBuilder() (可以防止 cmd 缓冲区溢出)。问题解决了!

4

2 回答 2

1

使用可以使用commons-io中的 FileUtils为您处理这个问题。

使用以下方法:http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#listFiles(java.io.File, java.lang.String[] , 布尔值

于 2013-08-07T18:19:54.130 回答
0

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

    // 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);
        }
    }
于 2013-08-05T15:46:29.343 回答