将数组值导出到csv文件java

时间:2013-03-12 14:43:33

标签: java arrays csv

我只需要帮助将数组元素导出到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文件没有任何反应。事实上,它抹去了一切。请帮忙。

5 个答案:

答案 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 
      }

此外,请使用BufferedWriterPrintWriter,因为它们比 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());
    }