2013-08-20 7 views

답변

2

가능합니다. Super CSV에 의해 throw 된 SuperCsvException에는 getContext() 메서드가 있습니다.이 메서드는 예외가 throw 될 때 CsvContext을 반환합니다. read()에 대한 호출을 try/catch해야합니다.

  • 행 번호 (1부터 시작) :

    이 포함 유용한 정보를 많이 포함되어 있습니다. 이것은 파일의 실제 행 번호입니다.

  • 행 번호 (1에서 시작).
  • 열 번호 (1에서 시작)
  • 행 원본 (이 경우 각 열의 토큰 화 된 문자열 목록)은 행 번호와 동일하지 않습니다 (한 행이 여러 행에 걸쳐있을 수 있음) 셀 프로세서를 적용하기 전)

또한 CSV의 원시되지 않은 행을 가져 오기 위해 getUntokenizedRow() 메서드를 호출하여 CsvReader를 호출 할 수도 있습니다. 예를

를 들어

ICsvListReader listReader = null; 
try { 
    listReader = new CsvListReader(new FileReader(CSV_FILENAME), 
     CsvPreference.STANDARD_PREFERENCE); 

    listReader.getHeader(true); // skip the header 

    final CellProcessor[] processors = 
      new CellProcessor[]{new Optional(), new ParseInt()}; 

    List<Object> row; 
    while((row = listReader.read(processors)) != null) { 
     System.out.println(String.format("lineNo=%s, rowNo=%s, row=%s", 
      listReader.getLineNumber(), listReader.getRowNumber(), row)); 
    } 

} catch (final SuperCsvException e){ 

    // here's what you're after! 
    final CsvContext context = e.getContext(); 
    System.out.println(String.format(
     "something went wrong on lineNo=%s, rowNo=%s, colNo=%s", 
     context.getLineNumber(), 
     context.getRowNumber(), 
     context.getColumnNumber())); 

} finally { 
    if(listReader != null) { 
     listReader.close(); 
    } 
} 

업데이트 : 당신은 유효성 검사 예외를 포착 바로 열 번호를 알고 싶어처럼

추가 한 코드를 검토 한 결과, 그것은 보인다. 그렇다면 this question을 살펴 봐야합니다.

+0

나는 당신이하는 말을 이해하지 못했습니다. – v0ld3m0rt

+0

좋아요 ... 어쩌면 코드 예제가 도움이 될 것입니다 –

+0

질문에 내 코드가 추가되었습니다. 확인 해봐. – v0ld3m0rt