zoukankan      html  css  js  c++  java
  • 用opencsv文件读写CSV文件

    首先明白csv文件长啥样儿:

    • 用excel打开就变成表格了,看不到细节
    • 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++,

    csv文件内容如下:

    clipboard

    csv文件默认用逗号分隔各列。

    有了基础的了解就进入主题,用Opencsv读写csv文件

    • 读:CSVReader
    • 写:CSVWriter

    下面分别来看一下opencsv为我们提供的方法(这里只介绍最常用的几个):

    读:CSVReader

    clipboard[1]

    构造器中涉及三个参数:

    • reader:就是读取文件的流对象,常用的有BufferedReader,InputStreamReader等
    • separator:用于定义前面提到过一下的分隔符,默认为逗号“CSVWriter.DEFAULT_SEPARATOR ”用于分隔各列;
    • quotechar:用于定义各个列的引号,有时候csv文件中会用引号或者其它符号将一个列引起来,例如一行可能是:"1","2","3",如果想读出的字符不包含引号,就可以把参数设为:"CSVWriter.NO_QUOTE_CHARACTER "

    定义一个以逗号为分隔符、读取时忽略引号的CSVReader就是:

    CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(csvFile), "GBK"), CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER);

    clipboard[2]

    上表中的第二个方法相对而言不如另外三个用的多,close()就不多说了,

    • readAll():读取全部
    • readNext():读取一行

    注意一点:如果先readNext,再readAll,readAll也是从readNext之后的那一行开始了,也就是readNext读了之后就不会再读了。

    写:CSVWriter

    clipboard[3]

    clipboard[4]

    构造器和方法都比较容易理解,可以和reader对应起来理解,这里就不多说了。

    下面来一个简单的实例:

    public class OpenCSV {
        public static void main(String[] args) throws Exception {
            OpenCSV oc = new OpenCSV();
            oc.CSVReadAll();
    
            oc.CSVWriter();
        }
    
        public String dir = System.getProperty("user.dir") + "/testMaven";
    
        public void CSVReadAll() throws Exception {
            File csv = new File(dir + "/file", "readerTest.csv");
    
            CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(csv), "GBK"), ',');
            String [] header = reader.readNext();   //用readnext读取之后就不存在于stream中了
            for (String s : header) {
                System.out.print(s + ",");
            }
            System.out.println("");
    
            List<String[]> list = reader.readAll(); //此时读取的已经是第二行了
            System.out.println(list.get(0)[0]);
            System.out.println("");
        }
    
        public void CSVWriter() throws Exception{
            File csv = new File(dir + "/file", "writerTest.csv");
            if (!csv.exists()) csv.createNewFile();
    
            List<String[]> list = new ArrayList<>();
            String s1 = "123";
            for (int i = 0; i < 22; i++) {
                String[] ss = {String.valueOf(i),String.valueOf(i),String.valueOf(i),String.valueOf(i)};
                list.add(ss);
            }
    
            CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(csv),"GBK"),CSVWriter.DEFAULT_SEPARATOR, CSVWriter.NO_QUOTE_CHARACTER);
            writer.writeNext(s1, s1, s1, s1);
            writer.writeNext("#","#","#","#");
            writer.writeAll(list);
            writer.flush();
            writer.close();
        }
    }
  • 相关阅读:
    Go语言核心36讲(Go语言进阶技术四)--学习笔记
    Go语言核心36讲(Go语言进阶技术三)--学习笔记
    Go语言核心36讲(Go语言进阶技术二)--学习笔记
    Go语言核心36讲(Go语言进阶技术一)--学习笔记
    Go语言核心36讲(Go语言基础知识六)--学习笔记
    Go语言核心36讲(Go语言基础知识五)--学习笔记
    Go语言核心36讲(Go语言基础知识四)--学习笔记
    Go语言核心36讲(Go语言基础知识三)--学习笔记
    Go语言核心36讲(Go语言基础知识二)--学习笔记
    Qt之如何创建并显示一个柱状图
  • 原文地址:https://www.cnblogs.com/chrischennx/p/5119608.html
Copyright © 2011-2022 走看看