Java:以字符串格式将CSV写入文件中的CSV

时间:2014-09-12 11:25:24

标签: java csv file-io

方法以逗号分隔格式返回String。例如,返回的String可以像下面给出的那样。

Tarantino,50,M,USA\n Carey Mulligan,27,F,UK\n Gong Li,45,F,China

我需要获取此String并将其写入CSV文件。我也必须为此文件插入页眉和页脚。

例如,当我打开文件时,上述数据的内容将是

Name,Age,Gender,Country
Tarantino,50,M,USA    
Carey Mulligan,27,F,UK
Gong Li,45,F,China

我们如何做到这一点?是否有任何开源库来完成这项任务?

3 个答案:

答案 0 :(得分:1)

CSV格式定义不明确。您不必为该文件编写标头。相反,它是非常简单的格式。数据值使用逗号或分号或空格等分隔。 您只需编写自己的简单方法,使用FileOutputStream或java.io包中的Writer将字符串写入本地计算机上的文件。

答案 1 :(得分:0)

您可以将此作为学习示例。 我使用了BufferedReader,因为他会关注line分隔符,但您也可以使用#split方法,并编写生成的标记。

import java.io.*;

public class Tests {

  public static void main(String[] args) {

    File file = new File("out.csv");
    BufferedWriter out = null;

    try {

      out = new BufferedWriter(new FileWriter(file));

      String string = "Tarantino,50,M,USA\n Carey Mulligan,27,F,UK\n Gong Li,45,F,China";

      BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(string.getBytes())));
      String line;

      while ((line = reader.readLine()) != null) {
        out.write(line.trim());
        out.newLine();
      }
    }

    catch (IOException e) {
      // log something
      e.printStackTrace();
    }

    finally {
      if (out != null) {
        try {
          out.close();
        } catch (IOException e) {
          // ignored
        }
      }
    }
  }
}

答案 2 :(得分:0)

这很简单

String str = "Tarantino,50,M,USA\n Carey Mulligan,27,F,UK\n Gong Li,45,F,China";
PrintWriter  pr = new PrintWriter(new FileWriter(new File("test.csv"), true));
String arr[] = str.split("\\n"); 
// splited the string by new line provided with the string
pr.println("Name,Age,Gender,Country"); 
// header written first and rest of data appended
for(String s : arr){
    pr.println(s);
}
pr.close();

不要忘记关闭finally块中的流并处理异常