• Java写入csv文件


    最近需要记录一下项目的日志,以便于日后的测试工作顺利进行,从现有的情况来看,使用csv文件做一下简单的记录即可。

    问题是,不知道该怎么操作?想起之前自己倒腾代码的时候研究过怎么用java读写excel文件,当时采用的方法还隐约有印象,但并不确定是否适用于csv文件的读写。在一番面向互联网开发之后,发现使用IO流即可对csv文件进行读写,但过程并不顺利,其中居然出现了一些奇奇怪怪的问题,由此产生了总结记录下来的想法。

    摘录部分代码,总结如下:

         File outFile = new File(path);
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile, true),"gbk"));
            if (outFile.exists() && outFile.length() != 0) {
                return bw;
            }
            outFile.createNewFile();
            bw.write("xxx,xxx,xxx,xxx,xxx"); //表头
            bw.newLine();
            bw.flush();
            return bw;

    最初我是按照网上的一些代码写的,但是发现只记录到了最新的数据,由此猜想新的数据将旧的数据覆盖掉了,new FileOutputStream(outFile, true),这行代码的第二个参数设置为true会在文件中追加数据,而不会将原本的数据覆盖掉。

    然后发现,记录下来的数据出现乱码的情况,这个问题我知道是由编解码方式不一致导致的,一番搜索发现采用gbk方式即可解决乱码问题。

    以上这段代码的大意就是,如果日志文件存在则返回一个BufferedWriter流,否则创建文件,写入表头,再返回流对象。

    获取到流对象后,即可对文件写入数据,bw.newLine();的意思是换行,注意同一行中不同列的数据需要使用英文逗号分隔。

    美中不足的地方在于没有查到如何使用io流在一个csv文件中创建多个页,所以如果有更灵活的需求推荐使用一些jar包而不是普通的io来实现。

  • 相关阅读:
    Delphi对接快递单的md5函数
    t+固定资产二维码打印工具2.01(支持微信查询)
    delphi 调用百度识别
    T+固定资产二维码卡片管理(外网版)
    Delphi 10.3.3 THTTPClient Post问题
    钉钉群机器人
    npm 命令集合
    php7的新特性
    ftp服务
    8.1 接口,接口也是一种类型
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13784560.html
Copyright © 2020-2023  润新知