我使用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());
}
答案 0 :(得分:2)
使用JSR223 Sampler将FileUtils与以下代码一起使用:
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
}