2013-04-16 1 views
1

바이트로 CSV 파일을 만드는 방법을 어떻게 만들어야하는지 알고 싶습니다. 나는이 같은 것을 사용하고 순간바이트 [] 안에 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

오케 나는 그것을 바꿨다. 나는 추가 문자열이 좋은 생각인지 몰랐다. – DavidVdd

+3

이 대답의 가장 중요한 부분은 마지막 부분인데, 여기서 특정 문자 세트가'getBytes()'에 제공됩니다. 정확히 어떤 문자 집합을 바이트 표현에 사용해야하는지 정확히 알지 못하면 올바른 반환 값이 많으며 호출자는 그 중 하나를 제외하고는 혼란을 겪을 것입니다. 텍스트의 바이트 인코딩 (어느 방향 으로든)을 다룰 때마다 * 항상 인코딩이 무엇인지 명시하십시오. –

관련 문제