【问题标题】:How can we write data in CSV from Beanshell我们如何从 Beanshell 以 CSV 格式写入数据
【发布时间】:2020-06-04 00:03:36
【问题描述】:

在 Eclipse 中执行下面的代码时,它的工作但在 bean shell 中不工作?它在 writer.write(data) 附近显示错误;

所以请帮我看看我们如何将字符串数组从 beanshell 传递到 csv

 import java.io.*;
        import java.io.FileWriter;
        import java.io.BufferedWriter;
        import java.util.List;
        int i;
            File file = new File("/home/sarvesh/Desktop/sgi/10");
        int filecount =  file.list().length;
        File[] files = file.listFiles();

        String[] imageString = new String[filecount];

            for ( i =0;i<filecount;i++) {
               File f = new File(files[i].getAbsolutePath());
                FileInputStream fis = new FileInputStream(f);   

               byte [] byteArray = new byte[(int) f.length()];
               fis.read(byteArray);
                imageString[i] = Base64.getEncoder().encodeToString(byteArray);

                    //vars.put("imagData",imageString[i]);

           FileWriter writer = new FileWriter("/home/sarvesh/Desktop/sgi/base64_csv.csv"); 

                  //    List<String> data = new ArrayList<String>(); 
                    ArrayList data = new ArrayList();
                data.add(new String[] {imageString[i] });
                    **writer.write(data);**
                    // writer.write(imageString[i]);
                    // writer.close();

            System.out.println("***********************************************");
    System.out.println("Base 64 conversion of  Image  : " + i + " ::" + imageString[i]);
            System.out.println("File Path     :                  " + f.getAbsolutePath());
            System.out.println("***********************************************");

                    }

【问题讨论】:

  • 显示的错误是什么?
  • 2020-06-03 18:31:34,172 错误 o.a.j.u.BeanShellInterpreter:调用 bsh 方法时出错:eval 源文件:内联评估:``import java.io.*;导入 java.io.FileWriter;导入 java 。 . . '':方法调用错误:在类'java.io.FileWriter'中找不到方法写入(java.util.ArrayList)
  • 有时它只打印最后一个索引数据

标签: jmeter beanshell


【解决方案1】:
  1. Beanshell 不是 Java,它不支持 diamond operators 因此你需要更改这一行:

    List<String> data = new ArrayList<String>(); 
    

    到这个:

    List data = new ArrayList(); 
    
  2. Starting from JMeter 3.1 you should rather be using JSR223 Test Elements and Groovy language 用于编写脚本
  3. 如果您使用 1 个线程(虚拟用户)运行测试,您的方法将有效,如果会有更多用户 - 您将遇到 race condition 导致文件损坏/数据丢失,因此如果您需要编写一些将特定数据放入某个特定文件中,最好使用Flexible File Writer。或者,您可以使用Critical Section Controller,但它会减慢您的测试速度

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多