java操作csv文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java操作csv文件相关的知识,希望对你有一定的参考价值。

用java怎么才能在csv文件指定位置写入新的数据,csv原始数据保留。
其实我是需要在csv文件的最后一列的地方增加一列数据,而其他部分数据不需要变化。这个csv文件可能会比较大,如果全部重新写到另一个文件的话比较费时。

一楼的建议好像不太对,如果用seek(long pos)把指针指向文件最后的话实际上是在原始记录的末行开始添加新行数据,而不是在文件的每一行末列添加一项数据.

看楼主比较懂,
参阅RandomAccessFile类
先用seek(long pos)把指针指向文件最后
然后视你的数据用
writeBytes(String s) //有汉字什么的
writeChars(String s) //一般的字符串
writeUTF(String str) //有UTF-8的字符
写入数据
参考技术A File f = new File(path);
BufferedWriter bw = new BufferedWriter(new FileWriter(f, true));
bw.write(txt);
bw.write("\r\n");
bw.close();
new BufferedWriter(new FileWriter(f, true))
上面中的true是决定文件是追加还是重写.
参考技术B cvs格式实际上就是字符串,直接通过英文”,“来进行的间隔显示,所以直接写入的时候直接在流中添加英文标点逗号即可。
实现思路:就是将需要保留的内容写入另外一个cvs文件中在满足条件处进行增加、删除、修改操作。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
OutputStreamWriter pw = null;//定义一个流
try
String file = "D:/test/test.xml";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
pw = new OutputStreamWriter(new FileOutputStream(“D:/New.cvs”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.cvs”实例
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

if(!str.indexOf("<end>"))//判断如果不满足cvs行条件就删除
pw.write(str);//将要写入文件的内容,可以多次write


bre.close();
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

以上是关于java操作csv文件的主要内容,如果未能解决你的问题,请参考以下文章

用Java对CSV文件进行读写操作

java 读取csv发送 foxmail

java写的excel文件转csv文件脚本遇到中文就会乱码

java实现CSV文件的导入导出操作

java实现CSV文件的导入导出操作

Java操作CSV文件导入导出