使用java.io.FileOutputStream导出.csv

时间:2019-01-17 07:12:33

标签: csv 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();

那是错误:

  

导出失败:java.lang.NoSuchMethodException:无固定值   Arity签名[(java.io.InputStream,java.io.OutputStream),   (java.io.Reader,java.io.Writer),(java.io.InputStream,   java.io.Writer),(java.io.Reader,java.io.OutputStream)]   org.apache.commons.io.IOUtils.copy匹配参数类型   [jdk.nashorn.internal.runtime.ConsString,java.io.FileOutputStream]

1 个答案:

答案 0 :(得分:0)

我必须创建一个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();