如何在 Java 中解析 CSV 文件

Rupam Yadav 2024年2月15日
  1. 在 Java 中使用 Scanner 解析 CSV
  2. 在 Java 中使用 String.split() 解析 CSV
  3. 在 Java 中使用 OpenCSV 解析 CSV 文件
如何在 Java 中解析 CSV 文件

我们将讨论在 Java 中解析 CSV 的话题。我们将看看下面这个 Java CSV 示例的各种方法来进行 Java CSV 解析。

Java CSV 示例

在 Java 中使用 Scanner 解析 CSV

第一个也是最经典的解析 CSV 文件的方法是使用 Java 的 Scanner 类。在这个例子中,我们使用 File 获取文件,然后用 Scanner 读取。

在这个例子中,最需要注意的是,我们必须知道 CSV 中使用的分隔符。我们使用原始 CSV 中的逗号作为分隔符,这就是为什么我们可以在代码中指定 , 作为分隔符。

import java.io.*;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) throws FileNotFoundException {
    File getCSVFiles = new File("/test/example.csv");
    Scanner sc = new Scanner(getCSVFiles);
    sc.useDelimiter(",");
    while (sc.hasNext()) {
      System.out.print(sc.next() + " | ");
    }
    sc.close();
  }
}

输出:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO | 

在 Java 中使用 String.split() 解析 CSV

在下一个例子中,我们使用 split() 方法与 String 类一起工作。我们可以使用 BufferedReader 来读取 CSV 文件,并循环读取每一行,直到达到 null

import java.io.*;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) throws FileNotFoundException {
    String line = "";
    final String delimiter = ",";
    try {
      String filePath = "/test/example.csv";
      FileReader fileReader = new FileReader(filePath);

      BufferedReader reader = new BufferedReader(fileReader);
      while ((line = reader.readLine()) != null) // loops through every line until null found
      {
        String[] token = line.split(delimiter); // separate every token by comma
        System.out.println(token[0] + " | " + token[1] + " | " + token[2] + " | " + token[3]);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

输出:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO

在 Java 中使用 OpenCSV 解析 CSV 文件

有几个库可以帮助我们在 Java 中解析 CSV。其中之一是 OpenCSV。在下面的例子中,CSVReader() 需要一个带有 CSV 文件的 fileReader,然后返回一个字符串数组。

import com.opencsv.CSVReader;
import java.io.*;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;

public class Main {
  public static void main(String[] args) throws Exception {
    try {
      String filePath = "/test/example.csv";
      FileReader fileReader = new FileReader(filePath);

      CSVReader openCSVReader = new CSVReader(fileReader);
      String[] record;

      while ((record = openCSVReader.readNext()) != null) {
        for (String token : record) {
          System.out.print(token + "\t");
        }
        System.out.println();
      }

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

输出:

Id	UserName	Age	Job	
1	John Doe	24	Developer	
2	Alex Johnson	43	Project Manager	
3	Mike Stuart	26	Designer	
4	Tom Sean	31	CEO	
作者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相关文章 - Java CSV