欢迎访问宙启技术站
智能推送

实现Java函数从文件读取并处理CSV数据

发布时间:2023-06-22 13:29:31

CSV格式是一种经常使用的数据格式,常见于数据交换和存储,以及Excel等各种数据处理工具中。如何从文件读取CSV数据并进行相关的数据处理是一个非常重要的问题。

Java提供了很多方法来读取和处理CSV文件,我们可以使用Java自带的库(如Java CSV)或其他第三方库来处理CSV数据。下面就介绍一下如何使用Java Csv库来从文件读取并处理CSV数据。

一、引入java csv库

导入java csv库到你的Java项目中,并开始使用Java CSV库来读取CSV数据。 Java Csv库包括CsvReader和CsvWriter两个类,它们可以用来读取和写入CSV数据。

二、读取CSV文件

使用 CsvReader 类从文件中读取CSV数据:

import java.io.FileNotFoundException;
import java.io.FileReader;

import com.csvreader.CsvReader;

public class ReadCsvFile {
    public static void main(String[] args) throws FileNotFoundException {
        String path = "file/data.csv";
        CsvReader dataReader = new CsvReader(new FileReader(path));
        dataReader.readHeaders();
        while (dataReader.readRecord()) {
            String name = dataReader.get("Name"); // 读取列 "Name"
            String age = dataReader.get("Age"); // 读取列 "Age"
            String email = dataReader.get("Email"); // 读取列 "Email"
            System.out.println(name + ", " + age + ", " + email);
        }
        dataReader.close();
    }
}

其中data.csv是需要读取的文件名。CsvReader 需要传递一个 FileReader 实例来读取CSV文件的内容。调用 readHeaders() 方法来读取CSV文件的标题行,然后使用 readRecord() 方法依次读取CSV文件的数据行。

三、CSV文件格式及其处理

CSV文件格式的数据可以根据实际需求处理,如将其存储到数据库或进行其他数据处理和计算等。下面展示一些常见的数据处理需求及其实现。

1、计算CSV文件中每一列的和

import java.io.FileReader;
import java.math.BigDecimal;

import com.csvreader.CsvReader;

public class SumCsvFile {
    public static void main(String[] args) throws Exception {
        String path = "file/score.csv";
        CsvReader dataReader = new CsvReader(new FileReader(path));
        dataReader.readHeaders();
        BigDecimal sumName = BigDecimal.ZERO;
        BigDecimal sumScore = BigDecimal.ZERO;
        while (dataReader.readRecord()) {
            String name = dataReader.get("Name");
            BigDecimal score = new BigDecimal(dataReader.get("Score"));
            sumName = sumName.add(new BigDecimal(name));
            sumScore = sumScore.add(score);
        }
        System.out.println("sumName:" + sumName);
        System.out.println("sumScore:" + sumScore);
        dataReader.close();
    }
}

2、计算CSV文件中出现次数最多的包含指定单词的行

import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.csvreader.CsvReader;

public class MaxCsvFile {
    public static void main(String[] args) throws Exception {
        String path = "file/data.csv";
        CsvReader dataReader = new CsvReader(new FileReader(path));
        dataReader.readHeaders();
        Map<Integer, Integer> countMap = new HashMap<Integer, Integer>();
        while (dataReader.readRecord()) {
            String content = dataReader.getRawRecord().toLowerCase();
            if (content.contains("hello")) {
                int count = Collections.frequency(new ArrayList<String>(Arrays.asList(content.split(","))), "hello");
                countMap.put(dataReader.getCurrentRecord(), count);
            }
        }
        int maxCountRecord = Collections.max(countMap.entrySet(), Comparator.comparingInt(Map.Entry::getValue)).getKey();

        dataReader.close();
    }
}

以上仅仅是几个使用Java Csv库来读取、处理和操作CSV文件的例子。实际上,还有许多其他的方法和技巧可以使用,以提高读取、处理和操作CSV数据的效率和质量。