如何将csv制作成byte[]?

7
我希望知道如何创建一个将数据转换为 byte[] 类型的 csv 文件的方法。
目前,我正在使用类似以下的代码:
 public byte[] makeCsv(){
      StringBuffer csv= new StringBuffer();
      csv.append("columnheader1;columnheader2\r\n");
      csv.append("cell1;cell2\r\n");
      //...
      return csv.toString().getBytes();
 }

我知道应该使用流,但我不知道使用哪种。没有IO访问的情况下,什么是最好的方法

1个回答

11

没有IO,你的方式完全没有问题。以下是稍微改进的方法。

  StringBuilder csv= new StringBuilder(); // Faster
  csv.append("columnheader1;columnheader2\r\n");
  csv.append("cell1;cell2\r\n");
  //...
  return csv.toString().getBytes("windows-1252"); // Windows Latin-1

你也可以使用 StringWriter。
或者使用 PrintWriter 将数据写入 ByteArrayOutputStream(内存 IO)。

1
好的,我已经修改了它。我不知道添加字符串是个好主意。 - DavidVdd
4
我认为这个答案最重要的部分在于最后提供给 getBytes() 的特定字符集。如果没有明确指定应使用哪种字符集进行字节表示,则可能会产生许多正确的返回值,而你的调用者将被混淆除了其中一个之外。每当处理文本的字节编码(无论是正向还是反向)时,请始终明确表示编码方式。 - Andrzej Doyle
1
请注意,此方法未正确对值进行清理。不要直接将此解决方案与不可信任的用户输入一起使用。 - Valerio Bozz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接