成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談Java讀取Csv實踐

開發 后端
CSV是逗號分隔型取值格式的英文簡稱(英文全稱為Comma Separated Values),是一種純文本格式,用來存儲數據。本文主要介紹Java讀取Csv的方法。

CSV中,數據的字段由逗號分開,程序通過讀取文件重新創建正確的字段,方法是每次遇到逗號時開始新一段數據。CSV文件是一個計算機數據文件用于執行審判和真正的組織工具,逗號分隔的清單。CSV文件是用于數字存儲的數據結構表的形式列出,每個相關的項目(會員)的一組是與他人也由逗號隔開的規定。中的每一行都CSV文件對應表中的行。在一條線,字段用逗號分隔,每一個領域屬于一個表列。CSV文件常常被用于移動表格數據之間的兩個不同的計算機程序,例如關系數據庫程序和電子表格程序。讓我們一起來探討Java是怎樣讀取CSV的??

看項目中以前的處理方式是直接用用java IO類庫讀取Csv文件,實際處理中發現Csv文件本身包含了對各種特殊字符的處理信息。最常見的比如:

1. 對包含特殊字符的字符串數據首尾加雙引號

2. 對數據中的單個雙引號前加單個雙引號

其它...

所以用Java IO讀到的字符串全是經過處理后的字符串,在某些場景下是不符合預期需求的。比如我需要的是不做任何處理的原始內容。

項目中另一種常見的文件格式Excel用了POI來處理,但是POI不支持Csv格式,于是找到了javacsv。

代碼很簡單:

Java代碼

 

  1. public List importCsv(String file)   
  2. {  
  3. List list = new ArrayList();  
  4. CsvReader reader = null;  
  5. try   
  6. {  
  7. //初始化CsvReader并指定列分隔符和字符編碼  
  8. reader = new CsvReader(file, ',', Charset.forName("GBK"));  
  9. while (reader.readRecord())   
  10. {  
  11. //讀取每行數據以數組形式返回  
  12. String[] str = reader.getValues();  
  13. if (str != null && str.length > 0)   
  14. {  
  15. if (str[0] != null && !"".equals(str[0].trim()))   
  16. {  
  17. list.add(str);  
  18. }  
  19. }  
  20. }  
  21. }   
  22. catch (FileNotFoundException e) {  
  23. log.error("Error reading csv file.",e);  
  24. }   
  25. catch (IOException e)   
  26. {  
  27. log.error("",e);  
  28. }  
  29. finally 
  30. {  
  31. if(reader != null)  
  32. //關閉CsvReader  
  33. reader.close();  
  34. }  
  35. return list;  

 

以上代碼有幾個要點:

1 初始化CsvReader時指定分隔符和字符編碼,如果不指定,默認分別為逗號和ISO-8859-1,我用了GBK,具體使用時要看當時的字符編碼而定。

2 讀取每行數據,返回字符串數組,數組內的順序即文件數據列的順序

3 ***記得關閉CsvReader

是不是很簡單,返回的數組格式也正好是我想要的,而且拿到是原始的數據,沒有經過特殊字符處理。

有些同學質疑特殊字符未經處理,插到數據庫會出錯,其實大可不必我們手工處理,一些基礎組件比如JDBC的preparedstatement已經包含了對特殊字符的處理,我們只要以綁定參數的形式來傳送這些包含特殊字符的數據就可以。常用的持久化框架底層也封裝了JDBC,自然也對特殊字符做了處理。

【編輯推薦】

  1. 學習java編程的八大優勢
  2. 解析Java平臺的構架與版本
  3. 體驗Hyper-V 2.0中的CSV功能
  4. Java架構設計和開發中的小技巧
責任編輯:于鐵 來源: 中國IT實驗室
相關推薦

2011-04-02 09:30:46

JavaIO

2017-11-10 13:02:44

iOSUI代碼

2009-07-09 14:56:23

Servlet讀取

2016-08-31 09:58:55

JavascriptFlux架構

2023-06-12 15:43:44

鴻蒙智能家居開發

2009-08-20 09:41:36

2018-08-29 13:57:40

前端性能測試Html5

2021-07-28 13:29:57

大數據PandasCSV

2010-02-01 13:26:58

C++讀取CSV文件

2023-12-05 13:47:00

Java開發

2009-08-21 11:02:55

C#異步調用

2022-12-14 10:09:44

研發效能

2024-10-23 21:21:32

2011-07-28 18:11:18

Objective-C Cocoa 編程

2015-01-15 17:41:54

soa云計算BPEL

2023-03-28 07:42:03

2019-01-02 13:45:19

2024-06-25 09:08:24

.NETCSV文件

2025-02-17 01:00:00

.NET性能服務器

2011-05-26 15:33:29

volatilejava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区高清免费 | 亚洲天堂一区 | 日韩欧美在 | 在线观看视频一区 | 国产成人精品久久久 | 色爱综合网 | 亚洲精品久久久 | 国产乱码精品一区二三赶尸艳谈 | 91青青草视频 | 国产精品一区一区 | xxxxx黄色片 欧美一区免费 | 亚洲一区在线播放 | 亚洲福利视频网 | 噜噜噜噜狠狠狠7777视频 | 四虎成人免费视频 | 亚洲精品久久久久久久久久久 | 性一交一乱一伦视频免费观看 | 国产美女黄色片 | 日韩精品在线看 | 九九视频在线观看视频6 | 九色在线视频 | 视频1区2区| 国产第一区二区 | 成人av网页 | 免费黄色片在线观看 | 国产一区在线视频 | 五月婷婷婷 | 看真人视频一级毛片 | 成人欧美一区二区三区黑人孕妇 | 免费看a | 国产精品久久国产精品 | 天堂av在线影院 | h在线免费观看 | 亚洲精品一区二区 | 一区二区蜜桃 | 国产精品久久精品 | 色综久久| 青春草91 | 日韩一区在线视频 | 欧美亚洲视频在线观看 | 久久欧美精品 |