【问题标题】:How to read a value from 'x'th row and 'y'th column in CSV using Java?如何使用 Java 从 CSV 中的第 x 行和第 y 列读取值?
【发布时间】:2018-02-07 09:39:38
【问题描述】:

是否可以从 CSV 中读取指定行号和列号的特定值。

例如,我的 CSV 数据如下所示,

CREATE,BulkDevice4981,SENSOR,localhost
CREATE,BulkDevice4081,SENSOR,localhost

我想从第“1”行和“2”列中读取值,而不用解析整个 CSV。

我需要这方面的帮助。请帮帮我

【问题讨论】:

  • 如果使用opencsv.CSVReader,可以设置起跑线。然后你可以调用readNext(),它返回一个字符串数组。现在你可以很容易地访问你想要的元素
  • 对每个 readNext() 进行计数,当达到您的预期数字时,然后将行拆分为 ,并使用您想要的任何方式。

标签: java csv


【解决方案1】:

如果不循环前行,就无法读取第 n 行,但这并不意味着读取整个文件。

所以,为了实现你的目标,你需要阅读第 n 行文件:

try (Stream<String> lines = Files.lines(Paths.get("path/to/your/file"))) {
    String line = lines.skip(LINE_NUMBER).findFirst().get();
}

然后,您可以简单地用逗号分隔行并从列中读取值:

String line = ...
String[] columns = line.split(",")
// columns[2] should contain your value

然而,这是相当原始的解决方案,最好使用专用的 CSV 阅读器,如 opencsv

【讨论】:

  • 是的,我使用了 opencsv。下面是代码String csvFile = "path_to_file"; CSVReader cr = new CSVReader(new FileReader(csvFile)); String [] csvCell ; while((csvCell = cr.readNext()) != null) { String device1 = csvCell[1]; System.out.println(device1);,它返回第 1 列的所有值。我想分别打印行“1”列“2”单元格值和行“2”列“2”值。
猜你喜欢
  • 2012-12-04
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多