CSV格式的文件在平时的软件应用中通常作为一种数据交换格式(协议)而存在。以下的介绍内容来自维基百科。在本篇最末有简单示例。
技术背景
.csv 文件格式的使用可以追溯至早期的商用电脑,它被大范围使用于电脑内部不同数据文字格式大小的转化。基于此原由,csv文档格式适用于任何电脑平台。
.csv是一种用逗号作为分隔符分隔数值的文本文档,在不同的.csv导出导入工具中也允许用其他的符号作为分隔符。一般简单的.csv转换工具不允许字段数值中存在逗号或者其他特殊符号例如换行符。更多复杂的.csv转换工具允许字段数值中包含有逗号或特殊符号。很多转换工具用双引号涵盖有特殊符号的数值,
内置的双引号符号可以用连续的双引号来表示。还有一些.csv工具用转义符号例如利用反斜扛对保留字符进行编码。
在计算机科学方面,这种类型的格式是所谓的“平面文件”,因为只有一个表可以存储在CSV文件。大多数系统都使用了一系列的表来存储他们的信息,即必须“夷”到一个单一的表,往往信息重复几次行,创建一个文本文件。
历史
逗号分隔值名单,很老的技术和个人电脑的早超过10年; IBM的Fortran语言(一级G)的编译器下OS/360支持这些在1967年,他们不是什么新想法即便如此。逗号分隔值清单往往容易输入拳打卡比固定栏不结盟的数据,并且不容易产生不正确的结果,如果一个值被击中一列,从它的位置(一个简单的错误,使)。
逗号分隔的列表(CSL公司)是一种数据 格式称为逗号分隔值(CSV)的最古老的天简单的电脑。在个人电脑产业(当时更普遍称为“家用电脑”),早期最常见的使用是由小企业创造的招标使用样板 套印 ,通过邮寄名单。
一些早期的应用软件,如文字处理机,让流“可变数据”要合并两个文件:一种形式的信,和CSL公司的名称,地 址,数据和其他数据方面,仍然是,仅仅是因为工作需要人力输入(建设清单)是很自然的和易于使用逗号分开划 定。CSL公司/ CSVs也被用来交换台式电脑之间的数据不同的架构,并进行简单的数据库的用途。
规范
逗号分隔列出日期之前,尽早从个人电脑,但被广泛应用于最早前IBM个人电脑时代的个人电脑磁带存储备份和交 换的信息的数据库机器的两种不同的架构。在这一天,负担得起的硬盘驱动器不存在,和许多小型企业试图实现 效益的计算使用软盘的软件。
没有一般的标准规范的CSV存在。之间的差异的CSV实现在不同的程序很常见,并可能导致互操作困难。互联网通信的CSV文件,资料的IETF文件( 符合RFC 4180于2005年10月)介绍了格式的“text/csv格式”MIME类型登记的IANA负责。另一个相关的规格是由派出文字其中也包括CSV格式。
许多非正式文件的存在,说明CSV格式。如何:逗号分隔值(CSV)文件格式概述了CSV格式中使用最广泛的应用和解释它如何能最好地利用和支持。
基本规则
CSV格式是分隔的数据格式,有字段/列分隔的逗号字符和记录/行分隔换行符。字段包含特殊字符(逗号,换行 符,或双引号),必须以双引号括住。但是,如果行包含一个单一的项目是空字符串,可以以双引号括住。如果 一个字段的值包含一个双引号字符是逃跑,把另一双引号字符它旁边。CSV文件格式并不需要一个特定的字符编 码,字节顺序,或行终止格式。
每个记录是一个行终止了换行符(ASCII码/低频= 0×0A)或回车换行符和一双(ASCII码/ CRLF = 0×0D0×0A),然而,线路中断可以嵌入。字段用逗号分隔(虽然地点在逗号作为小数点,分号是用来代替作为定界符)
1997,Ford,E350
在某些的CSV实施,领导和尾随空格或制表符,毗邻逗号,装饰。这种做法是有争议的 , 实际上是明文禁止的RFC 4180,其中规定,“被认为是空间的一个组成部分领域 , 而不应被忽视。”各领域内的嵌入式逗号必须存放在双引号字符。各领域内的嵌入式双引号字符必须是封闭的双引号字符,每一个嵌入式双引号字符必须用一对双引号字符。各领域内的嵌入式换行符必须封闭在双引号字符。领域的前导或尾随空格内必须封闭双引号字符。 (见评论领导和尾随空格以上。)字段可能永远是封闭的双引号字符,是否有必要或没有。第一条记录中的CSV文件中可能包含列名的每个领域。
举例说明
年 制造商 型号 说明 价值
1997 Ford E350 ac, abs, moon 3000.00
1999 Chevy Venture "Extended Edition" 4900.00
1999 Chevy Venture "Extended Edition, Very Large" 5000.00
1996 Jeep Grand Cherokee MUST SELL!
air, moon roof, loaded 4799.00
上面表格内容若以CSV格式表示就会像下列:
年,制造商,型号,说明,价值
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
示例:
//导出至CSV格式文件,CSV格式是一种比较常用的数据交换格式,可使用excel查看。
public class ExportCSV {
//分隔符:通常为",",但不仅限于","
public static final String CLIP_EXPORT_SEPARATOR = ",";
public static void exportCSV(String fileName) throws IOException {
//创建一个新文件,若文件已存在,则先删除
File file = new File(fileName);
if(file.exists()){
file.delete();
}
file.createNewFile();
StringBuffer buffer = new StringBuffer("");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
//导出数据
for(int i=0; i<20; i++){//假设i为行数
buffer = new StringBuffer("");
for(int j=0; j<6; j++){//假设j为要导出的每行数据中的列数目
buffer.append(String.valueOf(j));//假设j值为列值
buffer.append(CLIP_EXPORT_SEPARATOR);//分隔符
}
bw.write(buffer.toString(), 0, buffer.length()-1);
bw.newLine();//换行
}
bw.close();
}
public static void main(String[] args) throws IOException {
exportCSV("1.csv");
}