📜  csv文件数据结构java(1)

📅  最后修改于: 2023-12-03 15:00:10.301000             🧑  作者: Mango

CSV 文件数据结构 Java

CSV(Comma-Separated Values,逗号分隔值)是一种常用的文件格式,用于存储数值。它采用纯文本格式,能够轻易地被导入和导出,也可以被多种类型的软件读取和修改。在 Java 中,你可以使用多种方法来读取和写入 CSV 格式的文件,比如使用 Java 原生的库,或者使用第三方库,如 Apache Commons CSV,OpenCSV。以下是 Java 中使用 CSV 文件的示例。

Java 原生库读取 CSV 文件

使用 Java 原生库中的 Scanner 类,你可以轻松读取 CSV 格式的文件。下面是一个读取 CSV 文件并将其打印的示例:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadCSVFile {

  public static void main(String[] args) {
    try {
      File csvFile = new File("file.csv");
      Scanner scanner = new Scanner(csvFile);
      while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        String[] values = line.split(",");
        for (String value: values) {
          System.out.print(value + " ");
        }
        System.out.println();
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    }
  }
}

这个例子中,我们创建了一个 Scanner 对象,然后使用它逐行读取 CSV 文件。接下来,我们使用 split() 方法,将每一行分割成一个字符串数组,并在控制台上输出。

开源库分析
Apache Commons CSV

Apache Commons CSV 组件是开发 CSV 文件处理的一种快速而灵活的方法。它提供了可扩展的 API,可以处理所有基本和高级的 CSV 文件。

Apache Commons CSV 分为 3 部分:

  • CSVFormat:定义 CSV 文件的格式。
  • CSVParser:将 CSV 文件解析成 Java 对象。
  • CSVPrinter:将 Java 对象写入 CSV 文件。

以下是一个使用 Apache Commons CSV 将 CSV 文件解析成 Java 对象的示例:

import java.io.FileReader;
import java.io.IOException;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;

public class ReadCSVFileWithApacheCommonsCSV {

  public static void main(String[] args) {
    try {
      FileReader fileReader = new FileReader("file.csv");
      CSVParser csvParser = new CSVParser(fileReader, CSVFormat.DEFAULT);
      for (CSVRecord csvRecord : csvParser) {
        String name = csvRecord.get(0);
        String address = csvRecord.get(1);
        String phone = csvRecord.get(2);
        String email = csvRecord.get(3);
        System.out.println("Name : " + name);
        System.out.println("Address : " + address);
        System.out.println("Phone : " + phone);
        System.out.println("Email : " + email);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

这个例子中,我们创建了一个 FileReader 对象,然后使用 CSVParser 类,将文件解析成 CSVRecord 对象。接下来,我们可以使用成员方法,如 get() 和 size(),从每个 CSVRecord 对象中获取特定的值。在控制台上打印每个值。

OpenCSV

OpenCSV 是另一种可用于读写 CSV 文件的流行的开源库。它的优点是它明确地支持多种 CSV 模板。

以下是一个使用 OpenCSV 读取 CSV 文件的示例:

import com.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadCSVFileWithOpenCSV {

  public static void main(String[] args) {
    try {
      CSVReader reader = new CSVReader(new FileReader("file.csv"));
      String[] line;
      while ((line = reader.readNext()) != null) {
        for (String value: line) {
          System.out.print(value + " ");
        }
        System.out.println();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

这个例子中,我们创建了一个 CSVReader 对象,并在 while 循环中使用它逐行读取 CSV 文件,然后使用 for 循环将每行分割成值,并在控制台上输出。

结论

Java 提供了很多方法来操作 CSV 文件,你可以使用原生库或第三方库。使用这些库,你可以轻松地从 CSV 文件中读取和写入数据。在选择库时,你需要考虑许多因素,如功能和性能。最好根据你的需求选择最适合你的库。