如何在byte []中创建csv?

Dav*_*Vdd 3 java csv

我想知道如何制作一个在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();
 }
Run Code Online (Sandbox Code Playgroud)

我知道我应该使用流,但我现在不使用哪些流.什么是最好的方法(没有IO访问)

Joo*_*gen 7

没有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
Run Code Online (Sandbox Code Playgroud)

你也可以使用StringWriter.

或者使用PrintWriter写入ByteArrayOutputStream(内存中IO).

  • 我觉得这个答案最重要的部分是最后一部分,其中一个特定的字符集被提供给`getBytes()`.如果你没有确切地确定字节表示应该使用哪个字符集,那么有许多正确的返回值 - 你的调用者将被除了其中一个之外的所有人混淆.无论何时处理文本的字节编码(在任一方向上),*总是明确编码是什么*. (4认同)