J'utilise SuperCSV pour analyser un fichier CSV. Cela fonctionne parfaitement. Le fichier CSV que je transmets peut contenir des enregistrements non valides. À ce moment-là, est-il possible d'enregistrer quelle ligne n'est pas traitée?Ajout de la ligne d'erreur dans le journal en cas d'échec de SuperCSV
List<InputBean> csvContentsList = new ArrayList<InputBean>();
ICsvBeanReader beanReader = new CsvBeanReader(fileReader, CsvPreference.STANDARD_PREFERENCE);
InputBean bean = null;
do {
try {
bean = beanReader.read(InputBean.class, header, getProcessors());
if (bean != null)
csvContentsList.add(bean);
} catch (Exception e) {
logger.error("Error in parsing the record:"+e.getMessage());
}
} while (bean != null);
Dans ce code, si le fichier CSV contient enregistrement non valide, il renvoie une erreur et il est pris dans le bloc catch. Comment pourrait-on imprimer cet enregistrement invalide? ou le numéro de ligne de celui-ci?
Si vous ne voulez pas attraper des exceptions, vous pouvez également mettre en œuvre cette aide d'un processeur cellulaire qui supprime et recueille chaque exception. Voir [ici] (http://stackoverflow.com/questions/13646982/validate-every-field-in-a-single-pass-with-supercsv/13658467#13658467) pour un exemple. –