使用 java.io.FileOutputStream 导出 .csv

Export .csv using java.io.FileOutputStream

我正在尝试使用 java.io.FileOutputStream 将 JavaScript 生成的 CSV 文件导出到路径(例如 "C:/ExportedDocuments/")。但是,我猜我的代码中缺少或错误定义了某些内容,因为我收到一条错误消息,指出我正在尝试使用一种不存在的方法。正如评论部分所提到的,我很可能错误地将 CSV 传递给了 FileOutputStream。但我不知道,如何正确地做到这一点。

代码是 运行 作为工作流脚本。

这是我的代码:

var data = [
   ['Audi', 'A8'],
   ['VW', 'Golf R'],
   ['BMW', 'M3']
];

var csv = 'Brand,Model';
  data.forEach(function(row) {
      csv += row.join(',');
      csv += "\n";
});

outputStream = new java.io.FileOutputStream("C:/ExportedDocuments/" + "textfile" + ".csv");
org.apache.commons.io.IOUtils.copy(csv, outputStream);
outputStream.close();

那是错误:

Exporting failed: java.lang.NoSuchMethodException: None of the fixed arity signatures [(java.io.InputStream, java.io.OutputStream), (java.io.Reader, java.io.Writer), (java.io.InputStream, java.io.Writer), (java.io.Reader, java.io.OutputStream)] of method org.apache.commons.io.IOUtils.copy match the argument types [jdk.nashorn.internal.runtime.ConsString, java.io.FileOutputStream]

我必须创建一个 ByteArrayInputStream。这是有效的解决方案:

var data = [
   ['Audi', 'A8'],
   ['VW', 'Golf R'],
   ['BMW', 'M3']
];

var csv = 'Brand,Model';
  data.forEach(function(row) {
      csv += row.join(',');
      csv += "\n";
});

var CSVStream = new java.io.ByteArrayInputStream(csv.getBytes("UTF-8"));

outputStreamcsv = new java.io.FileOutputStream("C:/ExportedDocuments/" + "name" + ".csv");
org.apache.commons.io.IOUtils.copy(CSVStream, outputStreamcsv);
outputStreamcsv.close();