저는 CSV 파일 검증을 위해 Super CSV를 사용하고 있습니다.Super CSV를 사용하는 동안 유효성 검사 오류가있는 열 번호를 얻을 수 있습니까?
행 번호가 listReader.getRowNumber()
으로 표시되지만 유효성 검사 실수가있는 열 번호를 얻을 수있는 방법이 있습니까?
저는 CSV 파일 검증을 위해 Super CSV를 사용하고 있습니다.Super CSV를 사용하는 동안 유효성 검사 오류가있는 열 번호를 얻을 수 있습니까?
행 번호가 listReader.getRowNumber()
으로 표시되지만 유효성 검사 실수가있는 열 번호를 얻을 수있는 방법이 있습니까?
가능합니다. Super CSV에 의해 throw 된 SuperCsvException에는 getContext()
메서드가 있습니다.이 메서드는 예외가 throw 될 때 CsvContext을 반환합니다. read()
에 대한 호출을 try/catch해야합니다.
이 포함 유용한 정보를 많이 포함되어 있습니다. 이것은 파일의 실제 행 번호입니다.
또한 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을 살펴 봐야합니다.
나는 당신이하는 말을 이해하지 못했습니다. – v0ld3m0rt
좋아요 ... 어쩌면 코드 예제가 도움이 될 것입니다 –
질문에 내 코드가 추가되었습니다. 확인 해봐. – v0ld3m0rt