Je tente de lire un fichier CSV puis de créer un nouvel objet basé sur ce fichier CSV. Je peux le faire avec la bibliothèque SuperCSV, mais si une erreur se produit (comme une cellule spécifique est nulle), une erreur est générée (comme prévu). J'essaye de rassembler toutes les erreurs dans un ArrayList, mais maintenant à la première exception tout s'arrêtera. Comment obtenir le SuperCSV CsvBeanReader pour continuer à la ligne suivante, même s'il y a une erreur avec le processeur? J'ai la condition de boucle dans le bloc try/catch. Code ci-dessous:Java SuperCSV CsvBeanReader continuer malgré l'erreur
ArrayList<Duplicate> duplicates = new ArrayList<Duplicate>();
ArrayList<BadProperty> invalidProperties = new ArrayList<BadProperty>();
File convFile = new File(file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
fos.write(file.getBytes());
fos.close();
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(convFile), CsvPreference.STANDARD_PREFERENCE);
final String[] header = beanReader.getHeader(true);
final CellProcessor[] processors = getProcessors();
Property property;
while ((property = beanReader.read(Property.class, header, processors)) != null) {
// logic in here
}
}
catch(SuperCsvException e) {
invalidProperties.add(new BadProperty(e.getCsvContext()));
System.out.println(e);
}
finally {
if(beanReader != null) {
beanReader.close();
}
}