今天工做中須要讀取CSV文件,以前對Excel文件操做的比較多,第一次碰到須要操做CSV文件的狀況。html
剛開始想着本身寫一個工具類,因而上網搜了下CSV,只有詳細瞭解文件結構後,才能寫出正確的程序。java
逗號分隔值(Comma-Separated Values,CSV,有時也稱爲字符分隔值,由於分隔字符也能夠不是逗號),其文件以純文本形式存儲表格數據(數字和文本)。純文本意味着該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。CSV文件由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它字符或字符串,最多見的是逗號或製表符。一般,全部記錄都有徹底相同的字段序列。一般都是純文本文件。建議使用WORDPAD或是記事本(NOTE)來開啓,再則先另存新檔後用EXCEL開啓,也是方法之一。api
這是一段來自百度百科的介紹,看完這段我以爲我已經足夠了解CSV文件了。我以爲若是存純文本類型的數據,反而用CSV比Excel來得方便。函數
畢竟第一次用,本身寫確定不夠全面,想找個參考的,因而百度找到了JavaCSV api,看了下用起來足夠方便,由於這個需求比較緊,因此先拿來用,等之後有空閒的時間了,再試着本身寫個玩玩吧。工具
我如今基本上都是Maven構建項目,相信你們也是,就不提供jar包了。.net
<dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</artifactId> <version>2.0</version> </dependency>
CsvWriter api手冊code
public static void writer() throws IOException { // 第一參數:新生成文件的路徑 第二個參數:分隔符(不懂仔細查看引用百度百科的那段話) 第三個參數:字符集 CsvWriter csvWriter = new CsvWriter("F:/demo.csv", ',', Charset.forName("UTF-8")); // 表頭和內容 String[] headers = {"姓名", "年齡", "性別"}; String[] content = {"張三", "18", "男"}; // 寫表頭和內容,由於csv文件中區分沒有那麼明確,因此都使用同一函數,寫成功就行 csvWriter.writeRecord(headers); csvWriter.writeRecord(content); // 關閉csvWriter csvWriter.close(); }
public static void read() throws IOException { // 第一參數:讀取文件的路徑 第二個參數:分隔符(不懂仔細查看引用百度百科的那段話) 第三個參數:字符集 CsvReader csvReader = new CsvReader("F:/demo.csv", ',', Charset.forName("UTF-8")); // 若是你的文件沒有表頭,這行不用執行 // 這行不要是爲了從表頭的下一行讀,也就是過濾表頭 csvReader.readHeaders(); // 讀取每行的內容 while (csvReader.readRecord()) { // 獲取內容的兩種方式 // 1. 經過下標獲取 System.out.print(csvReader.get(0)); // 2. 經過表頭的文字獲取 System.out.println(" " + csvReader.get("年齡")); } }
這兩個類中還有不少其餘的方法,若是有須要使用,能夠閱讀相關的api手冊htm