Java 结构化数据文件读取

在日常的编程过程中,我们经常需要读取和处理结构化的数据文件。Java 作为一门强大的编程语言,提供了多种方式来读取和处理这些文件。本文将介绍如何使用 Java 读取结构化数据文件,并提供相应的代码示例。

结构化数据文件的概念

结构化数据文件是指按照一定格式和规范组织的数据文件,常见的结构化数据文件包括 CSV、XML、JSON 等。这些文件通常由多行多列的数据组成,每个字段之间使用特定的分隔符或者标记进行分隔。

读取 CSV 文件

CSV(Comma-Separated Values)是一种常见的结构化数据文件格式,它使用逗号作为字段之间的分隔符。下面是一个示例的 CSV 文件:

Name,Age,Gender
John,25,Male
Emily,30,Female

要读取 CSV 文件,我们可以使用 Java 内置的类库 java.io.BufferedReaderjava.io.FileReader,如下所示:

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

public class CSVReader {
    public static void main(String[] args) {
        String csvFile = "data.csv";
        String line = "";
        String csvSplitBy = ",";

        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
            while ((line = br.readLine()) != null) {
                String[] data = line.split(csvSplitBy);
                System.out.println("Name: " + data[0] + ", Age: " + data[1] + ", Gender: " + data[2]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述代码使用 BufferedReader 来读取文件,并使用 split 方法按照逗号分隔每一行数据。最后,我们将每个字段打印出来。

读取 XML 文件

XML(eXtensible Markup Language)是一种常用的结构化数据文件格式,它使用标签和属性来描述数据。下面是一个示例的 XML 文件:

<students>
  <student>
    <name>John</name>
    <age>25</age>
    <gender>Male</gender>
  </student>
  <student>
    <name>Emily</name>
    <age>30</age>
    <gender>Female</gender>
  </student>
</students>

要读取 XML 文件,我们可以使用 Java 提供的第三方库 javax.xml.parsers.DocumentBuilderFactoryorg.w3c.dom.Document,如下所示:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;

public class XMLReader {
    public static void main(String[] args) {
        try {
            File xmlFile = new File("data.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            doc.getDocumentElement().normalize();
            
            NodeList nodeList = doc.getElementsByTagName("student");
            for (int temp = 0; temp < nodeList.getLength(); temp++) {
                Node node = nodeList.item(temp);
                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    String name = element.getElementsByTagName("name").item(0).getTextContent();
                    String age = element.getElementsByTagName("age").item(0).getTextContent();
                    String gender = element.getElementsByTagName("gender").item(0).getTextContent();
                    System.out.println("Name: " + name + ", Age: " + age + ", Gender: " + gender);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码使用 DocumentBuilderFactoryDocumentBuilder 来解析 XML 文件,并使用 getElementsByTagName 方法来获取每个学生节点的信息。

读取 JSON 文件

JSON(JavaScript Object Notation)是一种常用的结构化数据文件格式,它使用键值对的方式来表示数据。下面是一个示例的 JSON 文件:

[
  {
    "name": "John",
    "age": 25,
    "gender": "Male"
  },
  {
    "name": "Emily",
    "age": 30,
    "gender": "Female"
  }
]

要读取 JSON 文件,我们可以使用 Java 提供的第三方库 org.json.JSONArray 和 `org.json.JSONObject