gpt4 book ai didi

java - 如何使用 JAVA 读取 CSV 文件

转载 作者:行者123 更新时间:2023-12-01 23:38:01 25 4
gpt4 key购买 nike

我有一个问题,但尚未找到任何解决方案。以下问题:我必须读取一个 CSV 文件,该文件必须如下所示:

First Name,Second Name,Age,

Lucas,Miller,17,

Bob,Jefferson,55,

Andrew,Washington,31,

作业是用JAVA读取这个CSV文件并显示如下:

First Name: Lucas

Second Name: Miller

Age: 17

属性名称并不总是相同,因此也可能是:

Street,Number,Postal Code,ID,

Schoolstreet,93,20000,364236492,

(“,”必须替换为“;”)

此外,文件地址并不总是相同。我已经有了 View 等。我只需要模型。

感谢您的帮助。 :))

我在 Controller 中已经有一个 FileChooser 类,它返回一个 URI。

最佳答案

如果您的 CSV 文件始终包含指示表列名称的标题行,那么只需捕获此行并将其拆分,以便将这些列名称放入字符串数组(或集合,或其他任何形式) )。该数组的长度决定了每个记录数据行预期可用的数据量。一旦你有了列名,一切就变得相对容易了。

如何获取 CSV 文件路径及其格式类型显然取决于您,但以下是如何执行手头任务的一般概念:

public static void readCsvToConsole(String csvFilePath, String csvDelimiter) {
String line; // To hold each valid data line.
String[] columnNames = new String[0]; // To hold Header names.
int dataLineCount = 0; // Count the file lines.
StringBuilder sb = new StringBuilder(); // Used to build the output String.
String ls = System.lineSeparator(); // Use System Line Seperator for output.

// 'Try With Resources' to auto-close the reader
try (BufferedReader br = new BufferedReader(new FileReader(csvFilePath))) {
while ((line = br.readLine()) != null) {
// Skip Blank Lines (if any).
if (line.trim().equals("")) {
continue;
}
dataLineCount++;
// Deal with the Header Line. Line 1 in most CSV files is the Header Line.
if (dataLineCount == 1) {
/* The Regular Expression used in the String#split()
method handles any delimiter/spacing situation.*/
columnNames = line.split("\\s{0,}" + csvDelimiter + "\\s{0,}");
continue; // Don't process this line anymore. Continue loop.
}
// Split the file data line into its respective columnar slot.
String[] lineParts = line.split("\\s{0,}" + csvDelimiter + "\\s{0,}");
/* Iterate through the Column Names and buld a String
using the column names and its' respective data along
with a line break after each Column/Data line. */
for (int i = 0; i < columnNames.length; i++) {
sb.append(columnNames[i]).append(": ").append(lineParts[i]).append(ls);
}
// Display the data record in Console.
System.out.println(sb.toString());
/* Clear the StringBuilder object to prepare for
a new string creation. */
sb.delete(0, sb.capacity());
}
}
// Trap these Exceptions
catch (FileNotFoundException ex) {
System.err.println(ex.getMessage());
}
catch (IOException ex) {
System.err.println(ex.getMessage());
}
}

使用这种方法,您可以拥有 1 到数千个列,这并不重要(并不是说您在任何给定记录中都会有数千个数据列,但是嘿....您永远不知道...哈哈)。并使用此方法:

// Read CSV To Console Window.
readCsvToConsole("test.csv", ",");

关于java - 如何使用 JAVA 读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58272300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com