zoukankan      html  css  js  c++  java
  • 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来实现。

  • 相关阅读:
    Redis配置文件详解
    SpingBoot 定时器(跟随Application启动)
    Linux 查找哪些文件包含指定的一个或多个字符串
    帆软报表中sql中出现汉字时乱码
    mysql 匹配奇数、偶数行数据
    vs code 快捷键中英文对照
    前端学习路线汇总
    vscode: Visual Studio Code 常用快捷键1
    vue-router的router.go(n)问题?
    vue2.0 技巧汇总
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13784560.html
Copyright © 2011-2022 走看看