我正在尝试使用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]
答案 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();