Java-读写CSV文件

青旅半醒 2022-05-08 05:18 517阅读 0赞

使用Apache的commons-csv包读写CSV文件,非常方便。
pom依赖

  1. <dependency>
  2. <groupId>org.apache.commons</groupId>
  3. <artifactId>commons-csv</artifactId>
  4. <version>1.6</version>
  5. </dependency>

代码

  1. package com.example.demo;
  2. import org.apache.commons.csv.CSVFormat;
  3. import org.apache.commons.csv.CSVParser;
  4. import org.apache.commons.csv.CSVPrinter;
  5. import org.apache.commons.csv.CSVRecord;
  6. import java.io.BufferedReader;
  7. import java.io.BufferedWriter;
  8. import java.io.IOException;
  9. import java.nio.file.Files;
  10. import java.nio.file.Paths;
  11. /**
  12. * @author Walker
  13. * @since 1.0 2018-10-09
  14. */
  15. public class CSVTest {
  16. public static void main(String[] args) throws IOException {
  17. // write();
  18. // read();
  19. read2();
  20. }
  21. public static void write() throws IOException {
  22. try (
  23. BufferedWriter writer = Files.newBufferedWriter(Paths.get("C:\\test.csv"));
  24. CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(
  25. "id", "name", "age"
  26. ))
  27. ) {
  28. csvPrinter.printRecord("1", "test1", "11");
  29. csvPrinter.printRecord("2", "test2", "21");
  30. csvPrinter.printRecord("3", "test3", "31");
  31. csvPrinter.printRecord("4", "test4", "41");
  32. csvPrinter.printRecord("5", "test5", "51");
  33. csvPrinter.flush();
  34. }
  35. }
  36. /**
  37. * 读取包括头部第一行
  38. *
  39. * @throws IOException
  40. */
  41. public static void read() throws IOException {
  42. try (
  43. BufferedReader reader = Files.newBufferedReader(Paths.get("C:\\test.csv"));
  44. CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT)
  45. ) {
  46. for (CSVRecord csvRecord : parser) {
  47. String id = csvRecord.get(0);
  48. String name = csvRecord.get(1);
  49. String age = csvRecord.get(2);
  50. System.out.println("id : " + id);
  51. System.out.println("name : " + name);
  52. System.out.println("age : " + age);
  53. System.out.println("---------------\n\n");
  54. }
  55. }
  56. }
  57. /**
  58. * 设置头部
  59. * @throws IOException
  60. */
  61. public static void read2() throws IOException {
  62. try (
  63. BufferedReader reader = Files.newBufferedReader(Paths.get("C:\\test.csv"));
  64. CSVParser parser = new CSVParser(reader, CSVFormat.DEFAULT
  65. .withHeader("id", "name", "age")
  66. .withIgnoreHeaderCase()
  67. .withTrim())
  68. ) {
  69. //key:头部名,value:顺序
  70. System.out.println(parser.getHeaderMap());
  71. for (CSVRecord csvRecord : parser) {
  72. System.out.println(csvRecord.getRecordNumber());
  73. String id = csvRecord.get("id");
  74. String name = csvRecord.get("name");
  75. String age = csvRecord.get("age");
  76. System.out.println("id : " + id);
  77. System.out.println("name : " + name);
  78. System.out.println("age : " + age);
  79. System.out.println("---------------\n\n");
  80. }
  81. }
  82. }
  83. }

发表评论

表情:
评论列表 (有 0 条评论,517人围观)

还没有评论,来说两句吧...

相关阅读

    相关 openCSVCSV文件

            openCSV是一款简单的用于解析CSV文件的java类库,它封装了CSV格式文件的读写操作,可将文件与java对象进行自动映射,自定义分隔符,使用转义符等。