专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java读取csv文件的方法

Java读取csv文件的方法

更新时间:2022-08-24 10:51:07 来源:动力节点 浏览1581次

在 Java 中读取 CSV 文件有以下四种方式:

1. Java Scanner 类

Java 的 Scanner 类提供了多种读取 CSV 文件的方法。它提供了一个构造函数,该构造函数生成从指定 CSV 文件扫描的值。此类还以令牌的形式破坏数据。

有一个分隔符模式,默认情况下,它匹配空白。然后,使用不同类型的 next() 方法,我们可以转换生成的标记。

使用 Scanner 类读取 CSV 文件的代码:

导入java。伊奥。* ; <字体>< /字体>
导入java。实用程序。扫描仪;<字体>< /字体>
公共类CSVReaderDemo {<字体>< /font >
  public static void main ( String [] args )抛出异常{< font >< /font > 
    扫描仪 sc =新扫描仪(新文件(“C:\\Users\\Dell\\Desktop\\csvDemo.csv” ));<字体>< /字体>  
    //解析一个CSV文件到Scanner类的构造函数中 <font></font>
    sc。使用分隔符(“,” );<字体>< /字体>
    //设置逗号作为分隔符模式<font></font>
    while ( sc.hasNext ( )) {<字体>< /font >  
      系统。出来。打印(sc.next ());<字体>< /字体>
    }<字体>< /font >
    sc。关闭();<字体>< /字体>
    //关闭扫描仪 <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

2. Java String.split() 方法

Java 的 String.split() 标识分隔符并将行拆分为标记。

这个方法的语法是:

公共字符串[]拆分(字符串正则表达式) 

使用 String.split() 方法读取 CSV 文件的代码:

导入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 >  
          系统。出来。打印(tempStr + “” );<字体>< /字体>
        }<字体>< /font >
        系统。出来。打印();<字体>< /字体>
      }<字体>< /font >
      br。关闭();<字体>< /字体>
    }<字体>< /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 阅读器。读取(csvFile );<字体>< /字体>
  }<字体>< /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

3.在Java中使用BufferedReader类

导入java。伊奥。缓冲读取器;<字体>< /字体>
导入java。伊奥。文件阅读器;<字体>< /字体>
导入java。伊奥。异常;<字体>< /字体>
公共类CSV {<字体>< /font >
  public static void main ( String [] args ) {< font >< /font >  
    字符串行 = "" ; <字体>< /字体>
    字符串 splitBy = "," ; <字体>< /字体>
    试试{<字体>< /font > 
      //将CSV文件解析成BufferedReader类构造函数<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>
        系统。出来。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,联系人= 9067215139,城市= Burmingham]
Emp[名字=Varun,姓氏=Patel,联系人= 2503595381,城市= Sindh]
Emp[名字=Michael,姓氏=Baldwin,联系人= 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,联系人 = 7982264359,城市 = Hubli]
Emp[名字 = Rajeev,姓氏 = Singh,联系人 = 3258837884,城市 = Patiala]
Emp[名字=Sujay,姓氏=Kapoor,联系人= 5127263160,城市= Mumbai]

4. 在 Java 中使用 OpenCSV API

OpenCSV API 是第三方 API。此 API 提供标准库来读取各种版本的 CSV 文件。OpenCSV API 还提供了更好的控制来处理 CSV 文件。该库还可以读取制表符分隔文件或 TDF 文件格式。

使用 OpenCSV API 读取 CSV 文件的代码:

导入java。伊奥。文件阅读器;<字体>< /字体>
进口com。打开.csv CSVReader ; <字体>< /字体>
公共类CSVReaderDemo {<字体>< /font >
  public static void main ( String [] args ) {< font >< /font >  
    CSVReader 阅读器 = null ; <字体>< /字体>
    试试{<字体>< /font > 
      //将CSV文件解析成CSVReader类构造函数<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 >  
          系统。出来。打印(令牌);<字体>< /字体>
        }<字体>< /font >
        系统。出来。打印(“\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 孟买

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>