我只需要帮助将数组元素导出到csv文件。我不知道我的代码有什么问题。任何帮助都很高兴。感谢。
for (int index = 0; index < cols.length; index++)
{
FileWriter fw = new FileWriter(newFileName);
if (index == cols.length - 1)
{
fw.append(cols[index]);
}
else
{
fw.append(cols[index]);
fw.append(",");
}
}
当我跑这个。我的csv文件没有任何反应。事实上,它抹去了一切。请帮忙。
答案 0 :(得分:9)
假设您在阵列中存储了String,我发布了另一种解决方案:
BufferedWriter br = new BufferedWriter(new FileWriter("myfile.csv"));
StringBuilder sb = new StringBuilder();
// Append strings from array
for (String element : array) {
sb.append(element);
sb.append(",");
}
br.write(sb.toString());
br.close();
最好的问候。
答案 1 :(得分:4)
您需要flush书面数据,close FileWriter 。
finally {
fw.close(); // close will automatically flush the data
}
此外,请使用BufferedWriter或PrintWriter,因为它们比 FileWriter 高效且进化。
顺便说一句,声明FileWriter超出你的for循环。目前,它将覆盖每次迭代的列。
答案 2 :(得分:2)
如果您使用更有效的BufferedWriter与try-with-resources相结合,则编写器会自动关闭。 (在Java 7中)
try {BufferedWriter br = new BufferedWriter(new FileWriter(newFileName)) {
// your code
}
答案 3 :(得分:0)
你必须使用
FileWriter fw = new FileWriter(newFileName,true);
到追加内容,否则文件将被覆盖。
append
方法的名称可能会产生误导,事实上它追加到内部缓冲区,而不是文件内容。
答案 4 :(得分:0)
最好的方法是使用CSVWriter。如果您有Maven项目,请将其添加为依赖项:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.4</version>
</dependency>
然后您可以像这样使用它:
try {
//the list that contains the String arrays
List<String[]> whatever = new ArrayList<>();
CSVWriter writer = new CSVWriter(new FileWriter(csvFilename));
String[] header = "Name,Age,Height,etc..".split(",");
writer.writeNext(header);
writer.writeAll(whatever, true); //And the second argument is boolean which represents whether you want to write header columns (table column names) to file or not.
writer.close();
System.out.println("CSV file created succesfully.");
} catch (Exception e) {
System.out.println("exception :" + e.getMessage());
}