CSV文件每行的末尾追加写数据

CSV文件每行的末尾追加写数据

一.需求分析

使用jmeter工具并发测试时,我们有时候需要把json提取器中提取的数据追加写到csv文件每行的末尾,以备之后的程序使用。eg:程序执行第一个线程时把提取的新数据追加到第一行的末尾,程序执行第二个线程的时候把提取的新数据追加到第二行的末尾,依次类推…

二.数据的准备

(1)需准备三个csv文件,分别为read.csv、read-copy.csv、write.csv。记得设置成UTF-8格式。
CSV文件每行的末尾追加写数据_第1张图片
解释一下:
read.csv提供给jmeter工具本身读用的,如下图:
CSV文件每行的末尾追加写数据_第2张图片
read_copy.csv和write.csv是用户自己写的java程序读写用的,代码放在了BeanShell 后置处理程序中
CSV文件每行的末尾追加写数据_第3张图片

三.先在eclipse中完成代码的编写调试

代码的实现:
(1) 程序第一次运行:read_copy.csv中的第2行数据(去掉第一行的头字段)和获取到的新数据(提取的新数据songteng2012)追加到write.csv文件第2行中(第一行的头字段在数据准备阶段已添加好)。
(2) 然后删除运行read_copy.csv中的第2行数据。
(3) 程序第二次运行:read_copy.csv中的第2行数据(去掉第一行的头字段)和获取到的新数据(提取的新数据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();
						
	
	}
	

}

四.程序执行

1.执行前数据
CSV文件每行的末尾追加写数据_第4张图片
2.程序执行一次后的数据
CSV文件每行的末尾追加写数据_第5张图片

五.程序放在jmeter的BeanShell 后置处理程序中

BeanShell 后置处理程序中要注意的是不需要我们去声明类。
CSV文件每行的末尾追加写数据_第6张图片

你可能感兴趣的:(性能)