【发布时间】:2021-05-03 13:56:39
【问题描述】:
为什么这段代码会跳过只有 3 列的 CSV 工作表中的每一行?
public void loadFile(String fileName) {
try (BufferedReader csvReader = new BufferedReader(new FileReader("C:\\src\\" + fileName + "", StandardCharsets.ISO_8859_1))) {
while (csvReader.readLine() != null) {
String[] data = csvReader.readLine().split(",", 3);
String sku = data[0];
String title = data[1];
double price = Double.parseDouble(data[2]);
Product newProduct = new Product(sku, title, price);
newProduct.setProducts(newProduct);
}
} catch (IOException e) {
System.out.println("Could not load file: " + e.getMessage());
}
}
【问题讨论】:
-
每次迭代调用
readLine两次。 -
我怀疑这是下面 iota 提出的观点,但你是 100% 正确的。 readline 作为 while 循环参数被调用一次,并在执行时再次调用。很好发现。
标签: java arrays csv filereader