抓取文件夹中的特定文件

时间:2013-08-04 05:15:00

标签: 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() {
        public boolean accept(File file, String name) {
            return name.toLowerCase().endsWith(".mkv");
        }
});

我是否需要遍历此代码?我的数组是否只设置为处理一个条目?这是我能用这段代码看到的唯一两个潜在问题,但两者看起来都很好。

Java: Find .txt files in specified folder也是我正在使用的资源。

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

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

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

enter image description here

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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);
        }
    }