2014-02-18 2 views
0

정말 CSV 파일이 아닌 파일을 만들고 있지만 SuperCSV를 사용하면이 파일을 쉽게 만들 수 있습니다. 파일의 구조는 서로 다른 정보를 분리하지 않는 레이아웃을 따라 각 행마다 다른 길이를 사용합니다. 따라서 한 줄에 어떤 정보가 있는지 알아 보려면 처음 2 자 (레지스터 이름)를보고 문자를 세고 크기로 추출해야합니다.null 구분 기호가있는 SuperCSV

빈 분리 기호를 사용하도록 SuperCSV를 구성했지만 생성 된 파일에 아무 것도없는 공간이 사용됩니다.

public class TarefaGerarArquivoRegistrosFiscais implements ITarefa { 

    private static final CsvPreference FORMATO_ANEXO_IV = new CsvPreference.Builder('"', '\0' , "\r\n").build(); 

    public void processar() { 
     try { 
      writer = new CsvListWriter(getFileWriter(), FORMATO_ANEXO_IV); 
      writer.write(geradorRegistroU1.gerar()); 
     } finally { 
      if (writer != null) 
       writer.close(); 
     } 
    } 
} 

내가 잘못 했나요? '\ 0'은 null char에 대한 올바른 코드입니까?

답변

2

아마도 듣고 싶지 않지만 Super CSV를 사용하지 않는 것이 좋습니다. 커미터입니다! 그것의 유일한 목적은 구분 된 파일을 다루는 것입니다. 그리고 당신은 구분 문자를 사용하지 않습니다.

toString() 메서드가 단순히 모든 값을 연결 한 다음 해당 단일 개체를 writer.write()에 전달하는 래퍼 개체 (목록 포함)를 만들면 Super CSV를 오용 할 수 있지만 엄청난 해킹입니다.

귀하의 문제에보다 적합한 다른 라이브러리를 찾거나 나만의 솔루션을 작성하는 것이 좋습니다.