我目前正在学习java,并且需要知道将csv文件的内容复制到数组中的最简单方法,并再次将数组的内容复制到csv文件中。 所以目前我有一个CSV文件employee.csv,其中包含以下内容:
Name,Company,Experience.
现在我需要检索经验大于2的员工,并将他们放在另一个包含姓名,经验的数组中。
我想将此数组写入另一个名为results.csv的.csv文件
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
我认为您应该尝试自己编写代码,而不是使用某些库为您完成此任务。解析CSV文件对于“目前正在学习java”的人来说是一个很好的练习。
下面是一个用于保存Employees和方法来解析文件的类。应该有更多错误检查代码。如果文件中有一行没有两个逗号,则程序将崩溃。我没有为您处理经验值检查。您可以在创建员工时检查它,只有在满足经验要求时才将新对象添加到阵列,或者可以在写入文件之前检查该值。为了简化输出到文件,我在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;
}
答案 1 :(得分:0)
您可以查看here以查找读取和写入csv文件的方法。
您需要在阅读Experience
之后和写入employee.csv
文件之前检查result.csv
。