0

私は現在Javaを学んでおり、csvファイルの内容を配列にコピーし、配列の内容をcsvファイルに再度コピーする最も簡単な方法を知る必要があります。したがって、現在、次を含むCSVファイルemployee.csvがあります。

Name,Company,Experience.

ここで、経験が 2 を超える従業員を取得し、名前、経験を含む別の配列に配置する必要があります。

この配列を results.csv という別の .csv ファイルに書き込みたい

これを達成するための最良の方法は何ですか?

4

2 に答える 2

2

ライブラリを使用してこのタスクを実行する代わりに、自分でコードを記述してみる必要があると思います。CSV ファイルの解析は、「現在 Java を学んでいる」人にとっては良い練習になります。

以下は、Employees を保持するクラスと、ファイルを解析するメソッドです。おそらく、エラー チェック コードがもっとあるはずです。ファイルにコンマが 2 つない行があると、プログラムがクラッシュします。あなたの経験値チェックは私が担当しませんでした。従業員を作成するときにそれを確認し、経験要件を満たしている場合にのみ新しいオブジェクトを配列に追加するか、ファイルに書き込む前にその値を確認できます。ファイルへの出力を簡素化するために、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;
}
于 2013-02-11T00:50:02.210 に答える
0

csv ファイルを読み書きする方法については、こちらを参照してください

Experienceから読み取った後、ファイルemployee.csvに書き込む前に確認する必要がありresult.csvます。

于 2013-02-11T00:11:58.640 に答える