读取 CSV 文件

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习如何在 Java 中读取 CSV 文件。CSV 文件通常用于以简单且易于阅读的格式存储数据。我们将介绍三种不同的方法来读取 Java 中的 CSV 文件:使用 BufferedReaderScannerOpenCSV 库。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/StringManipulationGroup(["`String Manipulation`"]) java(("`Java`")) -.-> java/DataStructuresGroup(["`Data Structures`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/FileandIOManagementGroup(["`File and I/O Management`"]) java(("`Java`")) -.-> java/ConcurrentandNetworkProgrammingGroup(["`Concurrent and Network Programming`"]) java/StringManipulationGroup -.-> java/strings("`Strings`") java/DataStructuresGroup -.-> java/collections_methods("`Collections Methods`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("`ArrayList`") java/FileandIOManagementGroup -.-> java/files("`Files`") java/FileandIOManagementGroup -.-> java/io("`IO`") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("`Working`") subgraph Lab Skills java/strings -.-> lab-117982{{"`读取 CSV 文件`"}} java/collections_methods -.-> lab-117982{{"`读取 CSV 文件`"}} java/arraylist -.-> lab-117982{{"`读取 CSV 文件`"}} java/files -.-> lab-117982{{"`读取 CSV 文件`"}} java/io -.-> lab-117982{{"`读取 CSV 文件`"}} java/working -.-> lab-117982{{"`读取 CSV 文件`"}} end

设置项目

我们将在 ~/project 目录下创建一个新的 Java 项目。通过在终端中运行以下命令,在 src 目录下创建一个名为 CSVReaderDemo.java 的新 Java 类:

cd ~/project
mkdir src
javac -d src src/CSVReaderDemo.java

在文本编辑器中打开 CSVReaderDemo.java

使用 BufferedReader 读取 CSV 文件

我们将使用 java.io 包中的 BufferedReader 类来读取 CSV 文件。以下代码展示了如何使用 BufferedReader 读取 CSV 文件:

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

public class CSVReaderDemo {
    public static void main(String[] args) {
        try {
            List<List<String>> data = new ArrayList<>(); // 用于存储数据的列表
            String file = "path/to/csv/file.csv"; // 替换为你自己的 CSV 文件路径
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);

            // 逐行读取文件内容
            String line = br.readLine();
            while (line != null) {
                List<String> lineData = Arrays.asList(line.split(","));
                data.add(lineData);
                line = br.readLine();
            }

            // 打印读取的数据
            for (List<String> list : data) {
                for (String str : list) {
                    System.out.print(str + " ");
                }
                System.out.println();
            }

            br.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

要运行代码,请在终端中执行以下命令:

cd ~/project
java -cp src CSVReaderDemo

使用 Scanner 读取 CSV 文件

我们也可以使用 java.util 包中的 Scanner 类来读取 CSV 文件。以下代码展示了如何使用 Scanner 读取 CSV 文件:

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Arrays;

public class CSVReaderDemo {
    public static void main(String[] args) {
        try {
            List<List<String>> data = new ArrayList<>();
            String filePath = "path/to/csv/file.csv"; // 替换为你自己的 CSV 文件路径
            File file = new File(filePath);
            Scanner s = new Scanner(file);

            while (s.hasNextLine()) {
                List<String> lineData = Arrays.asList(s.nextLine().split(","));
                data.add(lineData);
            }

            for (List<String> list : data) {
                for (String str : list) {
                    System.out.print(str + " ");
                }
                System.out.println();
            }

            s.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

要运行代码,请在终端中执行以下命令:

cd ~/project
java -cp src CSVReaderDemo

使用 OpenCSV 库读取 CSV 文件

对于更复杂的 CSV 文件,我们可以使用 OpenCSV 库。我们将创建一个 CSVReader 对象,并使用 readNext() 方法读取 CSV 文件的行。以下代码展示了如何使用 OpenCSV 读取 CSV 文件:

import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import com.opencsv.CSVReader;
import java.util.Arrays;

public class CSVReaderDemo {
    public static void main(String[] args) {
        try {
            List<List<String>> data = new ArrayList<>();
            String filePath = "path/to/csv/file.csv"; // 替换为你自己的 CSV 文件路径
            FileReader fr = new FileReader(filePath);
            CSVReader reader = new CSVReader(fr);

            String[] lineData = reader.readNext();
            while (lineData != null) {
                data.add(Arrays.asList(lineData));
                lineData = reader.readNext();
            }

            for (List<String> list : data) {
                for (String str : list) {
                    System.out.print(str + " ");
                }
                System.out.println();
            }

            reader.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

要运行代码,请在终端中执行以下命令:

cd ~/project
java -cp ".:lib/*:src" CSVReaderDemo

总结

在本实验中,我们学习了三种不同的 Java 读取 CSV 文件的方法:使用 BufferedReaderScanner 以及 OpenCSV 库。BufferedReaderScanner 都适用于简单的 CSV 文件,而 OpenCSV 则更适合处理更复杂的 CSV 文件。现在,你应该能够轻松地在 Java 中读取 CSV 文件了!

您可能感兴趣的其他 Java 教程