使用之前已经建议我在这里的问题,我尝试使用路径来读取一个文件,并以下列方式流:的Java:使用流读取文件
Path p= Paths.get(file);
try (Stream<String> lines = Files.lines(p, StandardCharsets.UTF_8)) { // 1
lines.map(line -> line.split(";")) // 2
.forEach(lineAsArray -> {
if (lineAsArray[0].equals("E")) {
creaEditore(lineAsArray[2], Integer.parseInt(lineAsArray[3]), lineAsArray[4]);
}
else if (lineAsArray[0].equals("L")) {
Libro tmp = null;
try {
tmp = creaLibro(lineAsArray[1], lineAsArray[2], Integer.parseInt(lineAsArray[3]), Double.parseDouble(lineAsArray[4]), lineAsArray[5]);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (EditoreInesistente e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tmp.setQuantita(Integer.parseInt(lineAsArray[6]));
}
});
}
catch (IOException io)
{
System.out.println("Wrong reading");
}
每一行都包含在开始一个对应于我要创建的对象的字母(“Editore”或“Libro”),以下字段包含其属性的值(所有字段由半列分隔)。但是,在执行的时候,我得到以下异常和错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "[email protected]"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at libreria.Libreria.lambda$4(Libreria.java:122)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at libreria.Libreria.leggi(Libreria.java:120)
at Esempio.main(Esempio.java:20)
调试我发现读第一线当一切都完美的工作,但随后的程序是不能分析它,并得到使用lineAsArray每个字段[]。有人能帮我吗?程序的要求也要求不考虑sintax不正确的行,我的代码会自动执行类似的操作吗?
这里我的文件sintax:
预先感谢您的帮助, 赞布罗塔。
您确定关于索引,您是不是指'creaEditore(lineAsArray [ 1],Integer.parseInt(lineAsArray [2]),lineAsArray [3]);'? – ktul