CSVファイルの各行の末尾に追加されたデータを書き込みます
1.需要分析
jmeterツールを同時テストに使用する場合、後でプログラムで使用するために、json抽出プログラムから抽出したデータをcsvファイルの各行の末尾に追加する必要がある場合があります。例:プログラムが最初のスレッドを実行すると、抽出された新しいデータが最初の行の最後に追加され、プログラムが2番目のスレッドを実行すると、抽出された新しいデータが2番目の行の最後に追加されます。
2.データの準備
(1)3つのcsvファイル、つまりread.csv、read-copy.csv、write.csvを準備する必要があります。UTF-8形式に設定することを忘れないでください。
説明:
read.csvは、以下に示すように、読み取り用にjmeterツール自体に提供されます
。read_copy.csvとwrite.csvは、Javaプログラムの書き込みと読み取りに使用され、コードはBeanShell後処理プログラムに配置されます。
3.最初に、Eclipseでコードの記述とデバッグを完了する
コードの実装:
(1)プログラムの最初の実行:read_copy.csvのデータの2行目(最初の行のヘッダーフィールドを削除)および取得した新しいデータ(抽出された新しいデータsongteng2012)は、write.csvファイルに追加されます。 2行目(データ準備段階で1行目のヘッダーフィールドが追加されています)。
(2)次に、read_copy.csvの2行目のデータを削除します。
(3)プログラムの2回目の実行:read_copy.csvの2行目のデータ(1行目のヘッダーフィールドを削除)と取得した新しいデータ(抽出した新しいデータsongteng2012)を、write.csvファイルの3行目に追加します。 。
(4)次に、read_copy.csvの2行目のデータを削除します。
などなど...
import java.io.File;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Opera_csv{
//eclipse编写中我们只需要read_copy.csv和write.csv这2个文件即可.
String readPath = "D:\\Jmeter\\apache-jmeter-5.1.1\\bin\\生成密钥实战Opera_csv\\read_copy.csv";
String writePath = "D:\\Jmeter\\apache-jmeter-5.1.1\\bin\\生成密钥实战Opera_csv\\write.csv";
//读取read_copy中行的数据和提取到的新数据,把这些数据追加写到write.csv中
public void write_csv() throws IOException {
BufferedReader r = new BufferedReader(new FileReader(new File(readPath)));
BufferedWriter w =new BufferedWriter(new FileWriter(writePath,true));
String temp = null;
r.readLine();
if((temp = r.readLine()) != null){
temp =temp + "," + "提取的新数据songteng2012";
w.write(temp);
w.write("\r\n");
}
w.close();
r.close();
del_row();
}
//删除read_copy中的第二行数据
public void del_row() throws IOException{
BufferedReader r = new BufferedReader(new FileReader(new File(readPath)));
StringBuffer str = new StringBuffer(4096);
String temp = null;
int line = 0;
int lineDel = 2;
while((temp=r.readLine()) != null) {
line++;
if(line == lineDel) continue;
str.append(temp).append("\r\n");
}
r.close();
BufferedWriter w =new BufferedWriter(new FileWriter(readPath));
w.write(str.toString());
w.close();
}
public static void main(String[] args) throws IOException
{
Opera_csv s = new Opera_csv();
s.write_csv();
}
}
4.プログラムの実行
1.実行前のデータ
2.プログラムを1回実行した後のデータ
5.プログラムはjmeterのBeanShell後処理プログラムに配置されます
BeanShellポストプロセッサでは、クラスを宣言する必要がないことに注意してください。