CSV에서 오는 간결함은 그것을 만드는 사람마저 간결함을 추구하게 하는 힘이 있다.
콤마으로 나눠진 값들(CSV, Comma Separated Values)은 그 간결함 속에서 더욱 확장되어왔다.
자바에서는 CSV를 만들기 위한 Writer를 따로 만들어주고 있지 않지만, 사람들이 애용하는 라이브러리는 존재한다.
그중 하나 opencsv을 사용해보자.
/** CSVWriter 사용해보기**/
public class CSVTest {
static List makeFileValues() {
List list = new ArrayList();
for(int i = 0; i < 10 ; i++) {
list.add(new String[] { String.valueOf(i), String.valueOf(i+i), String.valueOf(i+i+i)});
}
return list;
}
}
실행해보자.
public static void main(String[] args) throws IOException {
String Path = "C:/ynam/";
String Name = "CSVTEST";
try (CSVWriter writer = new CSVWriter(new FileWriter(Path+Name + ".csv"))){
writer.writeAll(makeFileValues());
}
}
실행해보자.
"0","0","0"
"1","2","3"
"2","4","6"
"3","6","9"
"4","8","12"
"5","10","15"
"6","12","18"
"7","14","21"
"8","16","24"
"9","18","27"
이렇게 나왔다.이 현상은 사실 우리 회사에서 벌어지던 일이었다. 이 따옴표가 문제는 아니다. 하지만 이 내용을 그대로 다시 디비에 넣고 다시 빼낸다면?
"""0""","""0""","""0""" """1""","""2""","""3""" """2""","""4""","""6""" """3""","""6""","""9""" """4""","""8""","""12""" """5""","""10""","""15""" """6""","""12""","""18""" """7""","""14""","""21""" """8""","""16""","""24""" """9""","""18""","""27"""처음부터 우리가 원하는 그 값 자체만을 담고 싶다면? 생성자에 추가하나만 하면 된다.
CSVWriter writer = new CSVWriter(new FileWriter(Path+Name + ".csv"))
여기를
CSVWriter writer = new CSVWriter(new FileWriter(Path+Name + ".csv"), ',', CSVWriter.NO_QUOTE_CHARACTER)
이렇게 바꾸고 다시 해보자.
public static void main(String[] args) throws IOException {
String Path = "C:/ynam/";
String Name = "CSVTEST_without_qoute";
try (CSVWriter writer = new CSVWriter(new FileWriter(Path+Name + ".csv"), ',', CSVWriter.NO_QUOTE_CHARACTER)){
writer.writeAll(makeFileValues());
}
}
자 실행해보면 어떻게 나올까
0,0,0
1,2,3
2,4,6
3,6,9
4,8,12
5,10,15
6,12,18
7,14,21
8,16,24
9,18,27
단순하다.
댓글 없음:
댓글 쓰기