1、读取CSV文件代码
import java.io.BufferedReader;
import java.io.File;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class ReadCsv {
public static void main(String[]args) throws IOException{
File inFile = new File("F:\\wang\\abc.csv"); // 读取的CSV文件
BufferedReader reader = new BufferedReader(new FileReader(inFile));
// 只读取直到最后一行
String inString = "";
try { while((inString = reader.readLine())!= null){
// StrngTokenizer把一行分割成多段,readLine()读取文件本行。
// StrngTokenizer与split的区别
// String.Split()使用正则表达式,而StringTokenizer的只是使用逐字分裂的字符。
// 如果不用正则表达式(StringTokenizer也不能使用正则表达式),StringTokenizer在截取字符串中的效率最高。
//
StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。
// java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。
// 加逗号,可以把下面的省市直接标点符号去掉,不加则正常显示用逗号分隔省,市,区。
StringTokenizer st = new StringTokenizer(inString,",");
while (st.hasMoreElements()){
System.out.print(st.nextToken());}
System.out.println();
reader.close();
}catch(FileNotFoundException e)
{//捕获File对象生成时的异常
e.printStackTrace();}
catch(IOException e){
//捕获BufferedReader对象关闭时的异常
e.printStackTrace();
} } }
结果:
abc
江苏省南京市南京街
辽宁省鞍山市立山区
2、.CSV文件内容添加
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
public class WriteCsv {public static void main(String[]args) throws IOException{
File inFile = new File("F:\\wang\\abcd.csv"); // 读取的CSV文件
try{BufferedWriter wte = new BufferedWriter(new FileWriter(inFile,true));
wte.newLine();
// 每个数据末尾需要加“,”号代表分隔,数据之间要用“+”号连接
wte.write("省,"+"哈尔滨市,"+"北京街"+"\n"+"黑龙省,"+"哈尔滨市,"+"北京街"+"\r"
+"苏省,"+"哈尔滨市,"+"北京街");
//注:“\r”代表回车,亲自验证,在笔记本状态显示在一行,但在csv格式下显示为多行“”
wte.close();}
catch(FileNotFoundException e){
//捕获File对象生成时的异常
e.printStackTrace();}
catch(IOException e){
//捕获BufferedWriter对象关闭时的异常
e.printStackTrace();
} } }
结果:
a | b | c |
江苏省 | 南京市 | 南京街 |
省 | 哈尔滨市 | 北京街 |
黑龙省 | 哈尔滨市 | 北京街 |
苏省 | 哈尔滨市 | 北京街 |