java jtl日志文件到csv的转换

mzillmmw  于 2023-09-29  发布在  Java
关注(0)|答案(4)|浏览(125)

我试图将jmeter.jtl文件转换为CSV文件。jtl文件的每一行都包含用逗号分隔的变量,就像普通csv文件一样。举例来说:a,B,c,d,e,f然而,在某些行中有多个分隔符,如逗号(,)和引号内的逗号(“,”)。举例来说:a,B,“c,d”,e,f我可以通过阅读jtl文件轻松解析逗号分隔值。但当我遇到逗号内的引号分隔符时,按代码未能生成有用的结果.我尝试使用java多分割,但问题仍然存在。
我的java代码如下:

try{
 BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(new File("D:/apache-jmeter-2.11/apache-jmeter-2.11/bin/")))));
while((line = reader.readLine()) !=null){   
    String[] datas = line.split("[,\",\"]");
     p.println(datas[0] + "," + datas[5] + "," + datas[2] + "," + datas[1] + "," + datas[3] + "," + datas[8] + "," + datas[9]); 
}

我已经使用split来使用(,)和(“,”)进行拆分。我该如何重写代码才能解决这个问题。

yvt65v4c

yvt65v4c1#

使用uniVocity-parsers读取以下内容:

CsvParserSettings settings = new CsvParserSettings(); //many options to configure the format and the parser here. Check the tutorial
CsvParser parser = new CsvParser(settings);
List<String[]> allRows = parser.parseAll(
    new FileReader(new File("D:/apache-jmeter-2.11/apache-jmeter-2.11/bin/")));

声明:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。

wnavrhmk

wnavrhmk3#

对我来说,你正在寻找的是一个现有的CSV处理库,你可以利用。我使用OpenCSV成功地处理了JMeter输出,但这显然只是许多可能的选项之一。

uqzxnwby

uqzxnwby4#

JTL files可以采用两种不同的格式,CSVXML。绝大多数用例都使用CSV格式,这就是您正在描述的格式。
要将JTL文件转换为CSV文件,只需将文件扩展名更改为*.csv即可。因此,可以使用this article中描述的普通电子表格应用程序(* 例如 *,Excel)来编辑和分析JTL文件。
如果您希望以编程方式分析JTL文件并将其视为CSV文件,则可以使用任何CSV处理库来完成。在对这个问题的其他答复中有几个例子。使用C#/.Net的另一种方法是引用Microsoft.VisualBasic命名空间并使用TextFieldParser

using Microsoft.VisualBasic.FileIO;
...
using (var textFieldParser = new TextFieldParser(path)
{
    TextFieldType = FieldType.Delimited 
})
{
    textFieldParser.SetDelimiters(",");
    while (!textFieldParser.EndOfData) 
    {
        foreach (string field in parser.ReadFields())
        {
            ...
        }
    }
}

有关TextFieldParser的使用的更多详细信息可以在official Microsoft documentation page上找到。

相关问题