2013-04-16 71 views
1

我想知道我應該如何使一個方法,使一個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(); 
} 

我知道我應該使用流,但我不知道現在哪些。 什麼是最好的辦法做到這一點(沒有IO訪問)

回答

5

沒有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)。

+0

Oke我改變了它。我不知道附加Strings是個好主意。 – DavidVdd

+3

我覺得這個答案中最重要的部分是最後一部分,其中一個特定的字符集被提供給'getBytes()'。如果您沒有確切地確定哪些字符集應該用於字節表示,那麼有很多正確的返回值 - 而且您的調用者會被除了其中一個之外的所有人所困惑。無論何時你處理文本的字節編碼(在任一方向),*總是明確什麼是編碼*。 –