2013-02-11 2 views
0

현재 자바를 배우면서 csv 파일의 내용을 배열로 복사하고 배열의 내용을 csv 파일로 다시 복사하는 가장 쉬운 방법을 알아야합니다.배열에 csv 파일의 내용을 복사/쓰십시오.

Name,Company,Experience. 

가 지금은 2 이상의 경험을 가진 직원을 검색하고 이름, 경험을 포함하는 다른 배열에 넣어해야합니다 그래서 현재 나는 다음을 포함하는 CSV 파일 employee.csv 있습니다.

나는이 작업을 수행하는 가장 좋은 방법이 될 것입니다 무엇

results.csv

라는 또 다른 .csv 파일이 배열을 쓰고 싶어요?

답변

2

이 작업을 수행하는 데 라이브러리를 사용하는 대신 코드를 직접 작성해야한다고 생각합니다. CSV 파일을 파싱하는 것은 "현재 Java를 배우는"사람에게 좋은 연습입니다.

다음은 파일을 구문 분석하기 위해 Employees 및 메서드를 보유하는 클래스입니다. 아마도 더 많은 오류 검사 코드가 있어야합니다. 파일에 두 개의 쉼표가없는 행이 있으면 프로그램이 중단됩니다. 나는 당신을 위해 경험 가치 체크를 처리하지 못했습니다. 직원을 만들 때이를 확인하고 경험 요구 사항을 충족하는 경우에만 새 개체를 배열에 추가하거나 파일에 쓰기 전에 해당 값을 확인할 수 있습니다. 파일로의 출력을 단순화하기 위해 Employee에 CSVString 메서드를 작성했습니다. 기간이 데이터에 포함되는 경우

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; 
} 
+0

, 당신은뿐만 아니라이 큰 경우를 수를 분석하고 비교를 제거 할 수 : 파일의 목록에서 읽기 이제

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; } } 

2. 1 센트 이상. – Oneb

+0

당신은 경험이 1.5 년 정도 될 수 있다는 것을 의미합니까? 그렇다면 직원 필드를 int 대신 float로 변경해야합니다. – Thorn

+0

오 또 다른 경우입니다. 그래서 우리는 그것이 데이터와 함께있는 경우를 대비하여 마지막 기간을 없애기 만하면됩니다. – Oneb

0

here을 보면 csv 파일에서 읽고 쓰는 방법을 찾을 수 있습니다.

employee.csv에서 읽고 result.csv 파일에 쓰기 전에 Experience을 확인하면됩니다.

관련 문제