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) {}
}
}
}
|