18. 자바 CSV 활용법 (완성)
세이브 방식
private static void Save() {
try {
FileWriter fw = new FileWriter((values.file_path), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("번호, 이름, 가격, 수량");
bw.write(System.lineSeparator());
bw.write("1, 파이리, 500, 30개");
bw.write(System.lineSeparator());
bw.write("2, 꼬부기, 1000, 20개");
bw.write(System.lineSeparator());
bw.write("3, 이쌍해씨, 1500, 10개");
bw.write(System.lineSeparator());
bw.flush();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
로드 방식
static ArrayList<String> COC = new ArrayList<String>();
public static void load() {
String line = "";
try {
FileReader fr = new FileReader(values.file_path);
BufferedReader br = new BufferedReader(fr);
while( (line = br.readLine()) != null ) {
COC.add(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//////////////////////////////////////////////////////////////
for (int index = 0; index < COC.size(); index++) {
System.out.println(COC.get(index));
}
에러가 있어서 새로 작성
[error] (run-main-0) java.nio.charset.MalformedInputException: Input length = 1
이전 소스로 작성 했을 때, utf 에러가 계속 떠서....
위와 같이 결국엔 해결......
csv 파일을 사용하는 방법은 개발자 마다 다 다르고, 블로그 마다 정리도 다르고,
에러 해결법도 다 달라서 애를 엄청 먹었다.
그럼에도 불구하고, 필자는 결국에 정말 깔끔한 해결방법을 찾아 내었다.
아래 부터는 개량형이다.
public static void Coffee_Load(){
String line_A = "";
String[] line_B;
int i = 0;
try{
FileReader fr = new FileReader(values.file_path);
BufferedReader br = new BufferedReader(fr);
while((line_A = br.readLine()) != null) {
int i = 0;
line_B = line_A.split(",");
for(int j = 0; j < line_B.length; j++) {
Coffee_Value[i][j] = line_B[j];
System.out.print(Coffee_Value[i][j] + " ");
}
i++;
System.out.println();
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Coffee_Save() {
try {
FileWriter fw = new FileWriter(values.file_path, false);
BufferedWriter bw = new BufferedWriter(fw);
for(int i=0; i<Coffee_Value.length; i++) {
for(int j=0; j<Coffee_Value[i].length; j++){
bw.write(Coffee_Value[i][j]);
bw.write(",");
}
bw.write(System.lineSeparator());
}
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
학교에서 배운 구구단을 처음으로 유용하게 쓴 것 같다.
ㅡㅡㅡㅡㅡ 추가;;;;
완벽했는데.... i 위치로 에러 발생.... 정정하였다.