实现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数据的效率和质量。
