前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java读取写入CSV文件

java读取写入CSV文件

作者头像
演化计算与人工智能
发布2020-08-14 15:23:36
4K0
发布2020-08-14 15:23:36
举报

读取 CSV 文件中的数据示例一

  • 示例一为读取一个 N 行 Dim 列的逗号分隔的二维 Double 类型 csv 文件
  • 基本思路
  • 按行读取,每一行都是一个 String,使用 Split 函数分成一个 String[][1],将 String[]中每个元素转为 Double 类型[2]存入 Double[]数组中,每一行的 Double[]在存入 ArrayList 中。
代码语言:javascript
复制
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 文件
代码语言:javascript
复制
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 格式

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DrawSky 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 读取 CSV 文件中的数据示例一
  • 读取 CSV 文件中的数据示例二
  • 将数据保存为 csv 格式
    • 参考资料
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档