.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();
        }

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐