更新時間:2022-08-24 10:51:07 來源:動力節(jié)點(diǎn) 瀏覽2650次
在 Java 中讀取 CSV 文件有以下四種方式:

Java 的 Scanner 類提供了多種讀取 CSV 文件的方法。它提供了一個構(gòu)造函數(shù),該構(gòu)造函數(shù)生成從指定 CSV 文件掃描的值。此類還以令牌的形式破壞數(shù)據(jù)。
有一個分隔符模式,默認(rèn)情況下,它匹配空白。然后,使用不同類型的 next() 方法,我們可以轉(zhuǎn)換生成的標(biāo)記。
使用 Scanner 類讀取 CSV 文件的代碼:
導(dǎo)入java。伊奧。* ; <字體>< /字體>
導(dǎo)入java。實用程序。掃描儀;<字體>< /字體>
公共類CSVReaderDemo {<字體>< /font >
public static void main ( String [] args )拋出異常{< font >< /font >
掃描儀 sc =新掃描儀(新文件(“C:\\Users\\Dell\\Desktop\\csvDemo.csv” ));<字體>< /字體>
//解析一個CSV文件到Scanner類的構(gòu)造函數(shù)中 <font></font>
sc。使用分隔符(“,” );<字體>< /字體>
//設(shè)置逗號作為分隔符模式<font></font>
while ( sc.hasNext ( )) {<字體>< /font >
系統(tǒng)。出來。打?。╯c.next ());<字體>< /字體>
}<字體>< /font >
sc。關(guān)閉();<字體>< /字體>
//關(guān)閉掃描儀 <font></font>
}<字體>< /font >
}
輸出:
Raju, Dixit 先生, 3603286012, Burdwan
, Joseph, Patil
先生, 4645968519, Hoogly, Andrew, Mukherjee 先生, 9067215139, Burmingham
, Varun, Patel 先生, 2503595381, Sindh
, Michael, Baldwin 先生, 7631068844, Kentucky
Emmanuel, Agarwal 先生, 3538037535, Nice
, Sumeet, Patil 先生, 6871075256, Aukland
, Pranab, Kulkarni 先生, 7982264359, Hubli
, Rajeev, Singh 先生, 3258837884, Patiala
, Sujay, Kapoor 先生, 5127263160, Mumbai
Java 的 String.split() 標(biāo)識分隔符并將行拆分為標(biāo)記。
這個方法的語法是:
公共字符串[]拆分(字符串正則表達(dá)式)
使用 String.split() 方法讀取 CSV 文件的代碼:
導(dǎo)入java。伊奧。* ; <字體>< /字體>
公共類CSVReader {<字體>< /font >
public static final String delimiter = "," ; <字體>< /字體>
public static void read ( String csvFile ) {< font >< /font >
試試{<字體>< /font >
文件文件=新文件(csvFile );<字體>< /字體>
FileReader fr = new FileReader (文件);<字體>< /字體>
BufferedReader br = new BufferedReader ( fr ) ; <字體>< /字體>
字符串行 = " " ; <字體>< /字體>
字符串[] tempArr; <字體>< /字體>
while (( line = br.readLine ()) != null ) {< font >< /font >
tempArr = 線。拆分(分隔符);<字體>< /字體>
for ( String tempStr: tempArr ) {<字體>< /font >
系統(tǒng)。出來。打?。╰empStr + “” );<字體>< /字體>
}<字體>< /font >
系統(tǒng)。出來。打印();<字體>< /字體>
}<字體>< /font >
br。關(guān)閉();<字體>< /字體>
}<字體>< /font >
catch ( IOException ioe ) {<字體>< /font >
愛荷華州。打印堆棧跟蹤();<字體>< /字體>
}<字體>< /font >
}<字體>< /font >
public static void main ( String [] args ) {< font >< /font >
//要讀取的csv文件<font></font>
字符串 csvFile = "C:\\Users\\Dell\\Desktop\\csvDemo.csv" ; <字體>< /字體>
CSV 閱讀器。讀?。╟svFile );<字體>< /字體>
}<字體>< /font >
}
輸出:
Raju, Dixit 先生, 3603286012, Burdwan
, Joseph, Patil
先生, 4645968519, Hoogly, Andrew, Mukherjee 先生, 9067215139, Burmingham
, Varun, Patel 先生, 2503595381, Sindh
, Michael, Baldwin 先生, 7631068844, Kentucky
Emmanuel, Agarwal 先生, 3538037535, Nice
, Sumeet, Patil 先生, 6871075256, Aukland
, Pranab, Kulkarni 先生, 7982264359, Hubli
, Rajeev, Singh 先生, 3258837884, Patiala
, Sujay, Kapoor 先生, 5127263160, Mumbai
導(dǎo)入java。伊奧。緩沖讀取器;<字體>< /字體>
導(dǎo)入java。伊奧。文件閱讀器;<字體>< /字體>
導(dǎo)入java。伊奧。異常;<字體>< /字體>
公共類CSV {<字體>< /font >
public static void main ( String [] args ) {< font >< /font >
字符串行 = "" ; <字體>< /字體>
字符串 splitBy = "," ; <字體>< /字體>
試試{<字體>< /font >
//將CSV文件解析成BufferedReader類構(gòu)造函數(shù)<font></font>
BufferedReader br = new BufferedReader ( new FileReader ( "C:\\Users\\Dell\\Desktop\\csvDemo.csv" )) ; <字體>< /字體>
while (( line = br.readLine ()) != null )< font >< /font >
//返回一個布爾值 <font></font>
{<字體>< /font >
字符串[]員工 = 行。拆分(拆分);<字體>< /字體>
//使用逗號作為分隔符 <font></font>
系統(tǒng)。出來。println ( "Emp[First Name=" +employee [ 1 ] + ",LastName=" +employee [ 2 ] + ",Contact=" +employee [ 3 ] + ",City=" +employee [ 4 ] + " ]" ) ; <字體>< /字體>
}<字體>< /font >
}<字體>< /font >
catch ( IOException e ) {<字體>< /font >
e. 打印堆棧跟蹤();<字體>< /字體>
}<字體>< /font >
}<字體>< /font >
}
輸出:
Emp[First Name= Raju, Last Name= Dixit, Contact= 3603286012, City= Burdwan]
Emp[First Name=Joseph, Last Name=Patil, Contact= 4645968519, City= Hoogly]
Emp[First Name=Andrew, Last Name= Mukherjee,聯(lián)系人= 9067215139,城市= Burmingham]
Emp[名字=Varun,姓氏=Patel,聯(lián)系人= 2503595381,城市= Sindh]
Emp[名字=Michael,姓氏=Baldwin,聯(lián)系人= 7631068844,城市= Kentucky]
Emp[First Name=Emmanuel, Last Name=Agarwal, Contact= 3538037535, City= Nice]
Emp[First Name=Sumeet, Last Name=Patil, Contact= 6871075256, City= Aukland]
Emp[First Name=Pranab, Last Name= Kulkarni,聯(lián)系人 = 7982264359,城市 = Hubli]
Emp[名字 = Rajeev,姓氏 = Singh,聯(lián)系人 = 3258837884,城市 = Patiala]
Emp[名字=Sujay,姓氏=Kapoor,聯(lián)系人= 5127263160,城市= Mumbai]
OpenCSV API 是第三方 API。此 API 提供標(biāo)準(zhǔn)庫來讀取各種版本的 CSV 文件。OpenCSV API 還提供了更好的控制來處理 CSV 文件。該庫還可以讀取制表符分隔文件或 TDF 文件格式。
使用 OpenCSV API 讀取 CSV 文件的代碼:
導(dǎo)入java。伊奧。文件閱讀器;<字體>< /字體>
進(jìn)口com。打開.csv CSVReader ; <字體>< /字體>
公共類CSVReaderDemo {<字體>< /font >
public static void main ( String [] args ) {< font >< /font >
CSVReader 閱讀器 = null ; <字體>< /字體>
試試{<字體>< /font >
//將CSV文件解析成CSVReader類構(gòu)造函數(shù)<font></font>
reader = new CSVReader ( new FileReader ( "C:\\Users\Dell\Desktop\csvDemo.csv" )) ; <字體>< /字體>
字符串[]下一行;<字體>< /字體>
//一次讀取一行 <font></font>
while (( nextLine = reader.readNext ()) != null ) {< font >< /font >
for ( String token: nextLine ) {<字體>< /font >
系統(tǒng)。出來。打?。钆疲?lt;字體>< /字體>
}<字體>< /font >
系統(tǒng)。出來。打?。ā癨n” );<字體>< /字體>
}<字體>< /font >
}<字體>< /font >
捕獲(異常 e ){<字體>< /font >
e. 打印堆棧跟蹤();<字體>< /字體>
}<字體>< /font >
}<字體>< /font >
}
輸出:
Mr. Raju Dixit 36??03286012 Burdwan
Mr. Joseph Patil 4645968519 Hoogly
Mr. Andrew Mukherjee 9067215139 Burmingham
Mr. Varun Patel 2503595381 Sindh
Mr. Michael Baldwin 7631068844 Kentucky
Mr. Emmanuel Agarwal 3538037535 Nice
Mr. Sumeet Patil 6871075256 Aukland
Mr. Pranab Kulkarni 7982264359 Hubli
Mr. Rajeev Singh 3258837884 Patiala
Sujay Kapoor 先生 5127263160 孟買
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743