CSV格式介绍
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。
CSV格式规则
1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居文件第一行。
3 一行数据不跨行,无空行。
4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
5列内容如存在半角引号(即"),替换成半角双引号("")转义,即用半角引号(即"")将该字段值包含起来。
6文件读写时引号,逗号操作规则互逆。
7内码格式不限,可为 ASCII、Unicode 或者其他。
8不支持数字
9不支持特殊字符
javacsv提供了对CSV格式数据的读写
依赖jar包
<!-- CSV读取工具 -->
<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
写入数据
public class WriterDemo {
public static void main(String[] args) throws Exception {
Path path = Paths.get("D:", "test", "csv_test.csv");
CsvWriter cw = new CsvWriter(new FileOutputStream(path.toFile()), ',', Charset.forName("GBK"));
String[] str = { "省", "市", "区", "街", "路", "里", "幢", "村", "室", "园", "苑", "巷", "号" };
cw.writeRecord(str);// 写入一行,也可以使用cw.write("省");一个单元格的写,写完通过cw.flush();完成一行
cw.close();
}
}
读取数据
public class ReaderDemo {
public static void main(String[] args) throws Exception {
Path path = Paths.get("D:", "test", "csv_test.csv");
CsvReader rw = new CsvReader(new FileInputStream(path.toFile()), Charset.forName("GBK"));
rw.readHeaders();//开启读取表头,CSV文件默认首行为表头
String[] headers = rw.getHeaders();//读出表头数据
while(rw.readRecord()) {//开启读写内容
String rawRecord = rw.getRawRecord();//读取一行
String[] split = rawRecord.split(",");//使用逗号拆分后获取一行值的字符数组
String string = rw.get("省");//根据表头名称读取一个单元格值,也可传入表头的int索引值
System.out.println(string);
}
rw.close();
}
}