1. 概念

ccsv(Comma Separate Values)文件即逗号分隔符文件,它是一种文本文件,可以直接以文本打开,以逗号分隔。windows默认用excel打开。它的格式包括以下几点(它的格式最好就看excel是如何解析的。):
①每条记录占一行;
②以逗号为分隔符;
③逗号前后的空格会被忽略;
④字段中包含有逗号,该字段必须用双引号括起来;
⑤字段中包含有换行符,该字段必须用双引号括起来;
⑥字段前后包含有空格,该字段必须用双引号括起来;
⑦字段中的双引号用两个双引号表示;
⑧字段中如果有双引号,该字段必须用双引号括起来;
⑨第一条记录,可以是字段名;
⑩以上提到的逗号和双引号均为半角字符。
构建方法该类包含一个构建方法,参数为要读取的csv文件的文件名(包含绝对路径)。

2. 普通方法

① getVContent():一个得到当前行的值向量的方法。如果调用此方法前未调用readCSVNextRecord方法,则将返回Null。
② getLineContentVector():一个得到下一行值向量的方法。如果该方法返回Null,则说明已经读到文件末尾。
③ close():关闭流。该方法为调用该类后应该被最后调用的方法。
④ readCSVNextRecord():该方法读取csv文件的下一行,如果该方法已经读到了文件末尾,则返回false;
⑤ readAtomString(String):该方法返回csv文件逻辑一行的第一个值,和该逻辑行第一个值后面的内容,如果该内容以逗号开始,则已经去掉了该逗号。这两个值以一个二维数组的方法返回。
⑥ isQuoteAdjacent(String):判断一个给定字符串的引号是否两两相邻。如果两两相邻,返回真。如果该字符串不包含引号,也返回真。
⑦ readCSVFileTitle():该方法返回csv文件中的第一行——该行不以#号开始(包括正常解析后的#号),且该行不为空

3. 代码实现

  1. import java.io.File;
  2. import java.io.FileReader;
  3. import java.util.List;
  4. import au.com.bytecode.opencsv.CSVReader;
  5. public class ReadCSV {
  6. public static void main(String[] args) throws Exception {
  7. File file = new File("e:\\read.csv");
  8. FileReader fReader = new FileReader(file);
  9. CSVReader csvReader = new CSVReader(fReader);
  10. String[] strs = csvReader.readNext();
  11. if(strs != null && strs.length > 0){
  12. for(String str : strs)
  13. if(null != str && !str.equals(""))
  14. System.out.print(str + " , ");
  15. System.out.println("\n---------------");
  16. }
  17. List<String[]> list = csvReader.readAll();
  18. for(String[] ss : list){
  19. for(String s : ss)
  20. if(null != s && !s.equals(""))
  21. System.out.print(s + " , ");
  22. System.out.println();
  23. }
  24. csvReader.close();
  25. }
  26. }
  1. import java.io.File;
  2. import java.io.FileWriter;
  3. import java.io.Writer;
  4. import au.com.bytecode.opencsv.CSVWriter;
  5. public class WriteCSV {
  6. public static void main(String[] args) throws Exception {
  7. File file = new File("e:\\write.csv");
  8. Writer writer = new FileWriter(file);
  9. CSVWriter csvWriter = new CSVWriter(writer, ',');
  10. String[] strs = {"abc" , "abc" , "abc"};
  11. csvWriter.writeNext(strs);
  12. csvWriter.close();
  13. }
  14. }

4. 另外一种代码实现

image.png
image.png