J'ai un fichier TSV très simple, avec des entrées comme si:CsvMapReader ne semble pas analyser mon fichier
614 2006-07-13 15:30:05 2009-11-20 23:56:21 510 350 3265 10 34
1038 2006-07-15 16:12:15 2009-11-16 05:12:11 304 443 4405 7 156
1437 2006-07-16 12:29:24 2009-11-16 16:25:12 45 73 725 6 37
2615 2006-07-19 23:23:55 2009-11-27 18:34:36 211 230 211 7 0
3148 2006-07-26 14:17:22 2009-11-20 17:35:18 7346 7244 11438 8 97
5593 2006-09-08 10:58:49 2009-11-24 06:08:27 898 1024 2897 8 56
Il n'a pas les en-têtes, et je l'obtenir d'une autre source, donc je n'a aucun contrôle sur la façon dont il est écrit. Je veux lire dans la première colonne, faire quelque chose avec, et ignorer le reste.
Mon code est:
List<Long> userIds = new ArrayList<Long>();
ICsvMapReader mapReader = null;
try {
mapReader = new CsvMapReader(new FileReader(inFile), CsvPreference.TAB_PREFERENCE);
// only map the first column - setting header elements to null means those columns are ignored
final String[] header = new String[] { "userid", null, null, null, null, null, null };
final CellProcessor[] processors = new CellProcessor[] {null,
null,
null,
null,
null,
null,
null };
Map<String, Object> userMap;
while((userMap = mapReader.read(header, processors)) != null) {
Long userId = Long.parseLong(userMap.get("userid").toString());
userIds.add(userId);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
IOUtils.closeQuietly(mapReader);
}
Je reçois aucune exception, mais la ligne mapReader.read() retourne toujours null. J'ai essayé d'utiliser new ParseLong() à la place de null dans la première position du processeur, et cela n'a eu aucun effet. J'ai l'impression qu'il me manque quelque chose de vraiment basique.
Lorsque j'ai ajouté les valeurs nulles supplémentaires, cela a fonctionné. Je jure que j'ai compté deux fois et obtenu sept colonnes. Je n'ai jamais eu d'exception, cependant, que je trouve étrange. Je vous remercie! –
betseyb
Hmmm doit être le code qui l'appelle - je suppose qu'il avale SuperCsvException –