我当前正在学习java,需要知道将csv文件的内容复制到数组中并将数组内容复制到csv文件中的最简单方法。 所以目前我有一个包含以下内容的CSV文件employee.csv:将csv文件的内容复制/写入数组
Name,Company,Experience.
现在我需要有经验的大于2检索员工并把他们包含名称,体验另一个数组。
我想写这个阵列到另一个.csv文件名为results.csv
什么是完成这一任务的最好方法是什么?
我当前正在学习java,需要知道将csv文件的内容复制到数组中并将数组内容复制到csv文件中的最简单方法。 所以目前我有一个包含以下内容的CSV文件employee.csv:将csv文件的内容复制/写入数组
Name,Company,Experience.
现在我需要有经验的大于2检索员工并把他们包含名称,体验另一个数组。
我想写这个阵列到另一个.csv文件名为results.csv
什么是完成这一任务的最好方法是什么?
而不是使用一些库来为你做这个任务,我认为你应该尝试自己编写代码。解析CSV文件对于“正在学习java”的人来说是一个很好的练习。
下面是一个用于保存雇员和解析文件的方法的类。应该有更多的错误检查代码。如果文件中有一行没有逗号,程序将崩溃。我没有为你处理经验值检查。您可以在创建员工时检查它们,只在符合体验要求时将新对象添加到数组中,或者在写入文件之前检查该值。为了简化对文件的输出,我在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;
}
您可以看看here来找到读取和写入csv文件的方法。
您只需在从employee.csv
读取并在写入您的result.csv
文件之前检查Experience
。
,你还不如剥它来解析的数量和比较,如果它是更大大于或等于2.只是一分钱。 – Oneb 2013-02-11 01:51:46
你的意思是这个经历可能是1.5年?如果是这种情况,那么我们可能应该将employee字段更改为float而不是int。 – Thorn 2013-02-11 02:39:07
哦,这是另一种情况。所以我们只需要去掉最后一段时间,以防数据丢失:)。 – Oneb 2013-02-11 02:50:38