java读取写入CSV文件
时间:2022-07-23
本文章向大家介绍java读取写入CSV文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
读取 CSV 文件中的数据示例一
- 示例一为读取一个 N 行 Dim 列的逗号分隔的二维 Double 类型 csv 文件
- 基本思路
- 按行读取,每一行都是一个 String,使用 Split 函数分成一个 String[][1],将 String[]中每个元素转为 Double 类型[2]存入 Double[]数组中,每一行的 Double[]在存入 ArrayList 中。
public void test() {
readValues(OutputfilePath, Valueslist);
for (int i = 0; i < Valueslist.size(); i++) {
for (int j = 0; j <Valueslist.get(0).length; j++) {
System.out.print(Valueslist.get(i)[j]+" ");
}
System.out.println();
}
}
public void readValues(String readpath, ArrayList<Double[]> Valueslist) {
//想要读取的数据是一个[N,Dim]的二维矩阵
File inFile = new File(readpath);
try {
BufferedReader reader = new BufferedReader(new FileReader(inFile));
while (reader.ready()) {
//这里没有办法使用矩阵进行操作,因为我们一行一行的读没有办法知道csv中保存数据的长度和宽度
//但是返回的是一个String,我们可以对这个String进行操作,按照分隔符将其分割,最好能是能够保存到一个完整的结构中
String line = reader.readLine();
String[] splitline = line.split(",");
//这里每一列的元素都是一个double数值,例如
//因此接下来我能够直接的转换成Double类型的变量
int Dim = splitline.length;
//将splitline中的每个元素保存到double类型的数组中
Double[] temp = new Double[Dim];
for (int i = 0; i < Dim; i++) {
temp[i] = Double.valueOf(splitline[i]);
}
Valueslist.add(temp);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
读取 CSV 文件中的数据示例二
- 示例二维读取一个 N 行两列的逗号分隔的二维数字字符串混合的 csv 文件
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class readCSV {
void readCSV(String readpath, ArrayList Nolist, ArrayList Dnalist) {
File inFile = new File(readpath);
try {
BufferedReader reader = new BufferedReader(new FileReader(inFile));
//判断是否到达文件末尾
while (reader.ready()) {
String line = reader.readLine();
//返回一个","分隔的迭代器
//这种方法不是很好,建议还是使用示例一中的方法
StringTokenizer st = new StringTokenizer(line, ",");
int NO;
String DNAsequence;
if (st.hasMoreTokens()) {
NO = Integer.valueOf(st.nextToken().trim());
DNAsequence = String.valueOf(st.nextToken().trim());
//使用ArrayList接收数据
Nolist.add(NO);
Dnalist.add(DNAsequence);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
将数据保存为 csv 格式
package Readcsv_testV0;
import java.io.*;
import java.util.ArrayList;
public class OutputCSV {
public static void writeCSV(ArrayList<String []> DNA, ArrayList<Double> Con, ArrayList<Double> Hp, ArrayList<Double> Hm, ArrayList<Double> Si, ArrayList<Double> Tm, ArrayList<Double> GC, String path) {
try {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));
for (int i = 0; i < DNA.size(); i++) {
out.write(DNA.get(i)[0]);
out.write(",");
out.write(DNA.get(i)[1]);
out.write(",");
out.write(Con.get(i).toString());
out.write(",");
out.write(Hp.get(i).toString());
out.write(",");
out.write(Hm.get(i).toString());
out.write(",");
out.write(Si.get(i).toString());
out.write(",");
out.write(Tm.get(i).toString());
out.write(",");
out.write(GC.get(i).toString());
out.newLine();
}
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
参考资料
[1]使用Split函数分成一个String[]: https://blog.csdn.net/u013555719/article/details/106029538
[2]中每个元素[转为Double类型: https://blog.csdn.net/u013555719/article/details/106029521
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(12)-系统日志和异常的处理②
- Enterprise Library Policy Injection Application Block 之二: PIAB设计和实现原理
- 育碧与研究所共同开发的AI,是什么样的?
- 大家都在关注AI,但这些事你可能并不知道!
- AI—未来医疗
- 微信小程序新功能上线 一键连Wi-Fi手机变门禁卡
- 使用xUnit为.net core程序进行单元测试(中)
- Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
- WCF技术剖析之十五:数据契约代理(DataContractSurrogate)在序列化中的作用
- WCF技术剖析之十四:泛型数据契约和集合数据契约(上篇)
- WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)
- WCF技术剖析(卷1)之前言
- WCF技术剖析(卷1)之目录
- WCF技术剖析(卷1)之推荐序
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android中layer-list基本使用详解
- Android Studio中主题样式的使用方法详解
- android点击无效验证的解决方法
- Android Studio 3.5格式化布局代码时错位、错乱bug的解决
- Android实现时钟特效
- 解决Android Studio Design界面不显示layout控件的问题
- Android读写文件工具类详解
- Kotlin实现在类里面创建main函数
- AndroidStudio 设置格式化断行宽度教程
- 从 SpringBoot 到 SpringMVC
- AndroidManifest.xml中含盖的安全问题详解
- Android Studio实现格式化XML代码顺序
- android自动生成dimens适配文件的图文教程详解(无需Java工具类)
- Android Studio自动提取控件Style样式教程
- 基于Android studio3.6的JNI教程之ncnn人脸检测mtcnn功能