在JMeter中递归列出文件夹和子文件夹中的文件

时间:2018-11-07 10:01:16

标签: java groovy jmeter beanshell

我使用BeanShell Sampler中的JMeter列出了文件夹中的所有文件。它仅列出目录中的文件,并且无法在子目录中列出文件

File folder = new File("C:\\_private\\Files\\input");

File[] files = folder.listFiles(new FileFilter() {
    public boolean accept(File file) {
        return file.isFile();
    }
});

for (int i=0; i < files.length; i++) {
    vars.put("file_" + i, files[i].getAbsolutePath());
}

3 个答案:

答案 0 :(得分:2)

使用JSR223 SamplerFileUtils与以下代码一起使用:

import org.apache.commons.io.FileUtils;
List<File> files = FileUtils.listFiles(new File("C:\\_private\\Files\\input"), null, true);

files.length替换为files.size()的通知:

for (int i=0; i < files.size(); i++) {
    vars.put("file_" + i, files[i].getAbsolutePath());
}

答案 1 :(得分:2)

Since JMeter 3.1 it's recommended to use JSR223 Test Elements and Groovy language用于任何形式的脚本,主要是因为Groovy performance is much better与其他脚本选项相比

Groovy依次提供File.eachFileRecurse()功能,这正是您所需要的。

示例代码:

def index = 1

new File('c:/apps/jmeter/bin').eachFileRecurse(groovy.io.FileType.FILES) {
    vars.put('file_' + index, it.getAbsolutePath())
    index++
}

答案 2 :(得分:1)

您将需要递归地进行操作。您可以像处理文件一样列出所有目录,然后调用创建的函数recursively。然后,当您使用初始文件调用该函数时,它将遍历树结构并为您提供列表中的所有文件。要添加到列表中,请使用addAll

def listFiles(File folder) {
    ... // Recursive function
}