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

时间:2013-02-11 00:03:15

标签: java

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

Name,Company,Experience.

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

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

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

2 个答案:

答案 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