您是否考虑过使用 OpenCSV 来写入您的值:http://opencsv.sourceforge.net/ http://opencsv.sourceforge.net/
有一个如何编写 CSV 文件的示例,非常简单。
至于您的问题,您似乎无法写入值,因为 Arraylist toString 方法不会返回逗号分隔的字符串。你可以使用这个:
public static void main(String[] args) throws IOException {
FileWriter writer = new FileWriter("/Users/artur/tmp/csv/sto1.csv");
List<String> test = new ArrayList<>();
test.add("Word1");
test.add("Word2");
test.add("Word3");
test.add("Word4");
String collect = test.stream().collect(Collectors.joining(","));
System.out.println(collect);
writer.write(collect);
writer.close();
}
请参阅收集器实现 - 它将收集所有 String 对象并使用您提供的分隔符连接它们。输出如下所示:
Word1,Word2,Word3,Word4
我希望这能解决你的问题。如果有不清楚的地方请告诉我。
Artur
编辑2,针对你的问题。
如果您的输入是您读取的字符串,您可以先用空格将其拆分,以将其分成单独的行。如果它是一个实际的数组,它将不起作用。这是我的例子:
public static void main(String[] args) throws IOException {
String input = "[\"user1\",\"track1\",\"player1\", \"user1\",\"track2\",\"player2\", \"user1\",\"track3\",\"player3\"]";
input = input.substring(1, input.length() - 1); // get rid of brackets
String[] split = input.split(" ");
FileWriter writer = new FileWriter("/Users/artur/tmp/csv/sto1.csv");
for(String s : split) {
String[] split2 = s.split(",");
writer.write(Arrays.asList(split2).stream().collect(Collectors.joining(",")));
writer.write("\n"); // newline
}
writer.close();
}
生成的文件如下所示:
"user1","track1","player1"
"user1","track2","player2"
"user1","track3","player3"