gpt4 book ai didi

java - 将 csv 文件的内容复制/写入数组

转载 作者:行者123 更新时间:2023-12-02 07:17:07 27 4
gpt4 key购买 nike

我目前正在学习java,需要知道将csv文件的内容复制到数组中并再次将数组的内容复制到csv文件中的最简单方法。目前我有一个 CSV 文件employee.csv,其中包含以下内容:

Name,Company,Experience.

现在我需要检索经验大于 2 的员工并将其放入另一个包含姓名、经验的数组中。

我想将此数组写入另一个名为 results.csv 的 .csv 文件

实现这一目标的最佳方法是什么?

最佳答案

我认为您应该尝试自己编写代码,而不是使用某些库来为您完成此任务。对于“正在学习 java”的人来说,解析 CSV 文件是一个很好的练习。

下面是一个保存员工的类和解析文件的方法。可能应该有更多的错误检查代码。如果文件中有一行没有两个逗号,程序将崩溃。我没有给你处理经验值检查。您可以在创建员工时检查这一点,并且仅在他们满足经验要求时将新对象添加到数组中,或者您可以在写入文件之前检查该值。为了简化文件的输出,我在 Employee 中编写了一个 CSVString 方法。

public class Employee {
private String name;
private String company;
private int experience;

public Employee(String name, String company, int experience) {
this.name = name;
this.company = company;
this.experience = experience;
}

public Employee(String name, String company, String exp) {
this.name = name;
this.company = company;
try {
experience = Integer.parseInt(exp.trim());
}
catch(NumberFormatException utoh) {
System.out.println("Failed to read experience for " + name +
"\nCannot conver to integer: " + exp);
}
}

public String toCSVString() {
return name + "," + company + "," + experience;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCompany() {
return company;
}

public void setCompany(String company) {
this.company = company;
}

public int getExperience() {
return experience;
}

public void setExperience(int experience) {
this.experience = experience;
}
}

现在从文件中读取列表:

public static ArrayList<Employee> readEmployeeFile(File csvFile) {
ArrayList<Employee> list = new ArrayList<>();
Employee joe;
try {
Scanner in = new Scanner(csvFile);
String line;
while(in.hasNextLine()) {
line = in.nextLine().trim();
String[] col = line.split(",");
joe = new Employee(col[0],col[1],col[2]);
list.add(joe);
}
in.close();
}
catch(IOException ug) {
System.out.println("Error reading line: " + line);
System.out.println(ug);
}
return list;
}

关于java - 将 csv 文件的内容复制/写入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804135/

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