
2008年10月31日
1 基本介紹
可以說(shuō)CSV格式的文件經(jīng)常碰到,何為CSV格式,CVS全稱comma-separated values,就是典型的用逗號(hào)隔開(kāi)的文件,比如下面這種文件格式
Name,company
zhangsan,ibm
lisi,oracle
這種就是典型的CSV格式文件。不過(guò)也可以擴(kuò)展到其它符號(hào)隔開(kāi)的字符,比如
Name#company
Zhangsan#ibm
Lisi#oracle
這種也算CSV格式
Java開(kāi)源框架CVSReader提供了一個(gè)輕量級(jí)、簡(jiǎn)單方便的統(tǒng)一操作接口可用,下面具體講解如何操作CVS格式
2 安裝和使用
2.1下載
目前CSV reader的最新發(fā)布版本是1.8。我們可以從
http://opencsv.sourceforge.net/
上面下載到最新的csvreader包。
2.2安裝
直接把jar包分別存放到開(kāi)發(fā)工程的類路徑下面即可使用。
3 讀取CSV格式文件
3.1基本簡(jiǎn)介
首先,讀取CSV格式的文件需要?jiǎng)?chuàng)建一個(gè)CSVReader,如下
CsvReader reader = new CsvReader(Reader r, char c);
其中第一個(gè)參數(shù)為讀取文件,第二個(gè)參數(shù)為分割符,比如“,”,或者“#”
另外,也有其它幾個(gè)參數(shù),可以查閱API,比如
CsvReader reader = new CsvReader(InputStream r, char c, Charset charset);等等
其次,一般需要讀取頭信息,如下:
reader.readHeaders();
String[] headers = reader.getHeaders();
讀取了后,指針就會(huì)移動(dòng)到下一行,也就是可以開(kāi)始讀取文件內(nèi)容
假如,有多行的話,可以用一個(gè)循環(huán)套入,例如下面:
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
3.2綜合例子
在C盤下創(chuàng)建一個(gè)測(cè)試文件test.cvs,內(nèi)容如下:
a#b#c
1#2#3
4#5#6
下面是解析代碼:
public static void main(String[] args) throws Exception {
CsvReader reader = new CsvReader(new FileReader("c://csv.txt"), '#');
reader.readHeaders();
String[] headers = reader.getHeaders();
while (reader.readRecord()) {
for (int i = 0; i < headers.length; i++) {
String value = reader.get(headers[i]);
System.out.print(value+" ");
}
System.out.println("");
}
}
運(yùn)行以上程序,可以看到輸出
1 2 3
4 5 6
4 寫CSV格式文件
寫CSV格式文件也比較簡(jiǎn)單,寫每一列只要直接調(diào)用
csvWriter.write()即可
另外,寫完每行結(jié)束后,都要調(diào)用 csvWriter.endRecord();
表示結(jié)束一行
文件寫完畢后,要記得刷新一下并關(guān)掉,如下:
csvWriter.flush();
csvWriter.close();
代碼如下:
publicstaticvoid main(String[] args) throws Exception {
CsvWriter csvWriter = new CsvWriter(new FileWriter("c://test.text"), '#');
csvWriter.write("name");
csvWriter.write("company");
csvWriter.endRecord();
csvWriter.write("11");
csvWriter.write("12");
csvWriter.endRecord();
csvWriter.write("21");
csvWriter.write("22");
csvWriter.flush();
csvWriter.close();
}
}
運(yùn)行以上程序,可以看到C盤下面創(chuàng)建了一個(gè)文件
test.text
內(nèi)容如下:
name#company
11#12
21#22
posted @
2008-10-31 14:42 jspark 閱讀(11805) |
評(píng)論 (3) |
編輯 收藏