SpringBoot读取.csv文件

.csv文件是什么?

CSV文件最早用在简单的数据库里,由于其格式简单,并具备很强的开放性,所以起初被扫图家用作自己图集的标记。CSV文件是个纯文本文件,每一行表示一张图片的许多属性。你在收一套图集时,只要能找到它的CSV文件,用专用的软件校验后,你对该图集的状况就可以了如指掌。 每行相当于一条记录,是用“,”分割字段的纯文本数据库文件

在 java中解析 来吧上代码吧
依赖
maven

       <dependency>
            <groupId>de.siegmar</groupId>
            <artifactId>fastcsv</artifactId>
            <version>1.0.3</version>
        </dependency>

gradle

    implementation "de.siegmar:fastcsv:1.0.3"

 File file = new File("/*/*/*.csv");
        CsvReader csvReader = new CsvReader();
        csvReader.setContainsHeader(true);

        CsvContainer csv = csvReader.read(file, StandardCharsets.UTF_8);
         for (CsvRow row : csv.getRows()) {
                  //通过头获取对应属性
                 String str=row.getField("test");
            }

也可以通过MultipartFile接受不过还要转成 File

 public void add(MultipartFile file) throws IOException {

        if (ObjectUtils.isEmpty(file)){
           return;
        }

        CsvReader csvReader = new CsvReader();
        csvReader.setContainsHeader(true);

        CsvContainer csv = csvReader.read(multipartFile2File(file), StandardCharsets.UTF_8);
for (CsvRow row : csv.getRows()) {
                  //通过头获取对应属性
                 String str=row.getField("test");
            }
            

}


  /**
     * multipartFile转File
     **/
    public static File multipartFile2File(MultipartFile multipartFile){
        File file = null;
        if (multipartFile != null){
            try {
                file=File.createTempFile("tmp", null);
                multipartFile.transferTo(file);
                System.gc();
                file.deleteOnExit();
            }catch (Exception e){
                e.printStackTrace();
                log.warn("multipartFile转File发生异常:"+e);
            }
        }
        return file;
    }

也可以用流读取 不需要依赖

 public void add() throws IOException {

File file=new File("/*/*/*.csv");
        //获取文件名
        file.setReadable(true);
        file.setWritable(true);
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
            br = new BufferedReader(isr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String line = "";
        ArrayList<String> records = new ArrayList<>();
        try {
            while ((line = br.readLine()) != null) {
                System.out.println(line);
                records.add(line);
            }
            System.out.println("csv表格读取行数:" + records.size());
        } catch (IOException e) {
            e.printStackTrace();
        }

}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

  T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值