내용

글번호 819
작성자 heojk
작성일 2018-02-22 17:20:25
제목 ArrayList 데이터 CSV파일로 저장하고 불러오기
내용 ArrayList 데이터 CSV파일로 저장하고 불러오기 Customer.java
public class Customer {
	private String name;
	private char gender;
	private String email;
	private int birthYear;
	
	public Customer(String name, char gender, String email, int birthYear) {
		super();
		this.name = name;
		this.gender = gender;
		this.email = email;
		this.birthYear = birthYear;
	}
	public Customer() {
		super();
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public char getGender() {
		return gender;
	}
	public void setGender(char gender) {
		this.gender = gender;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getBirthYear() {
		return birthYear;
	}
	public void setBirthYear(int birthYear) {
		this.birthYear = birthYear;
	}
	
	@Override
	public String toString() {
		return "Customer [name=" + name + ", gender=" + gender + ", email=" + email + ", birthYear=" + birthYear + "]";
	}
	
	public String toCSV() {
		return name+","+gender+","+email+","+birthYear;
	}

}
SaveListDataToCSV.java
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

public class SaveListDataToCSV {
	public static void main(String[] args) {
		//고객 정보를 파일에 저장하세요. customer.txt 파일에 저장
		Customer cust = new Customer();
		cust.setName("홍길동");
		cust.setEmail("hong@hong.com");
		cust.setGender('남');
		cust.setBirthYear(2001);
		
		Customer cust2 = new Customer();
		cust2.setName("홍길서");
		cust2.setEmail("seo@hong.com");
		cust2.setGender('남');
		cust2.setBirthYear(2002);
		
		Customer cust3 = new Customer();
		cust3.setName("홍길남");
		cust3.setEmail("south@hong.com");
		cust3.setGender('여');
		cust3.setBirthYear(2003);
		
		ArrayList<Customer> custList = new ArrayList<>();
		custList.add(cust);
		custList.add(cust2);
		custList.add(cust3);

		FileOutputStream out = null;
		try {
			out = new FileOutputStream("customer.txt");
			for(Customer customer : custList) {
				out.write(customer.toCSV().getBytes());
				out.write("\n".getBytes());
			}
			System.out.println("파일이 저장되었습니다. 프로젝트를 새로고침(F5)하세요.");
		} catch (FileNotFoundException e) {
			System.out.println(e.getMessage());
		} catch (IOException e) {
			System.out.println(e.getMessage());
		} finally {
			try { out.close(); } catch (IOException e) { }
		}
	}
}
LoadCSVDataToList.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class LoadCSVDataToList {
	public static void main(String[] args) {
		ArrayList<Customer> custList = new ArrayList<>();
		FileReader in = null;
		BufferedReader bufIn = null;
		try {
			in = new FileReader("customer.txt");
			bufIn = new BufferedReader(in);
			String data = null;
			do {//파일에서 데이터를 읽어 파싱하고 Customer 객체로 만들어 ArrayList에 넣는다.
				data = bufIn.readLine();	//한 라인 읽기
				if(data != null) {
					String[] custInfo = data.split(",");	//콤마로 분리하기
					Customer customer = new Customer();		//Customer 객체 생성하기
					customer.setName(custInfo[0]);			//객체에 값 저장하기
					customer.setGender(custInfo[1].charAt(0));
					customer.setEmail(custInfo[2]);
					customer.setBirthYear(Integer.parseInt(custInfo[3]));
					custList.add(customer);		//리스트에 Customer 객체 저장하기
				}
			}while(data != null); //읽어들인 데이터가 없을 때 까지
			
			for(Customer cust : custList) {
				System.out.println(cust.toCSV());
			}
		} catch(IOException e) {
			System.out.println(e.getMessage());
		} finally {
			try { in.close(); }catch(Exception e) {}
			try { bufIn.close(); }catch(Exception e) {}
		}
	}
}