如何在 Java 中解析 CSV 檔案
Rupam Yadav
2023年1月30日
2020年11月24日
我們將討論在 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
Author: Rupam Yadav
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