【问题标题】:Confused about reading from csv file in java对从 java 中的 csv 文件读取感到困惑
【发布时间】:2020-10-25 13:15:08
【问题描述】:

所以,我目前正在做一个项目,我正在为汽车经销商创建库存清单。 我的意图是创建一个名为 Cars.csv 的 csv 文件,软件从中读取并将其加载到 GUI 字段中。

我真的很困惑如何从这个文件中读取,我想直接访问某些记录。我知道它也是一个二维数组。我只是对如何设置整个事情感到困惑。我的意图是也有一个名为 Cars 的类,并为其赋予属性。

如果有人可以就任何事情给我建议,请告诉我。请看这张图片。 csv file

我认为有一种方法可以像 row1、column4 那样读取它,就像一个数组一样。

【问题讨论】:

标签: java csv


【解决方案1】:

方法应该如下。

  1. 尝试将文件作为输入流读取到您的应用程序中。
  2. 读取该输入流的每一行。
  3. 使用“,”将该行拆分为一个数组。

这样您就可以将 CSV 文件的内容读入您的应用程序。

让我也展示一个示例代码。

FileReader fileReader = new FileReader(file)
BufferedReader br = new BufferedReader();

Map<String, String[]> lines = new HashMap<String, String[]>();
String line;
while ((line = br.readLine()) != null) {
    String[] lineContent= line.split(",");
    // use this in the way you need
    lines.put(lineContent[0], lineContent);
}

现在,当您想要获得具有“LA1 ABC”的行时;你只需要调用lines.get("LA1 ABC")

【讨论】:

  • 通过这种方法我可以通过直接访问找到某个记录吗?所以我想找到 LA1 ABC 的颜色,而 LA1 ABC 就像第 5 行。我怎么会得到这个?
  • 所以我们可以创建一个Map,第一列作为key,所有文本作为value数组。我更新了答案以显示如何做到这一点。
  • @zayd1k - 简而言之,map 是一个键值对;您可以在其中使用键引用某些值。在这种情况下,我们将针对第一列值存储行的内容。所以如果你知道第一列数据,你就可以快速从地图中提取所有数据。
  • HashMap 中的一个键可以有多个值吗?
  • 如果它有助于解决问题,请accept the answer
【解决方案2】:

您可以使用开源库来读取 CSV 文件。 OpenCSV 就是这样一个库。

一个解释如何使用 OpenCSV 读取 CSV 的博客 https://www.baeldung.com/opencsv

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 2013-07-15
    • 2019-03-18
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 2012-02-27
    • 2013-03-15
    • 2018-10-03
    相关资源
    最近更新 更多