java 读取csv 文件

java 读取csv 文件csv 格式本质上位文本类型数据 目前解析方式查找过来就一种 需要注意的就是在读取 csv 前需要知道 csv 编码格式才可以正确解析 获取流对应的编码类型 parambb return throwsExcept publicstatic BufferedInpu throwsExcept StringcharSe null byte buffer ne

csv 格式 本质 上位文本类型数据,目前解析方式查找过来就一种,需要注意的就是在读取csv前需要知道csv编码格式才可以正确解析 / * 获取流对应的编码类型 * @param bb * @return * @throws Exception */ public static String getCharSet(BufferedInputStream bb) throws Exception { String charSet = null; byte[] buffer = new byte[3]; //因流读取后再读取可能会缺少内容,此处需要先读,然后再还原 bb.mark(bb.available() + 1); bb.read(buffer); bb.reset(); String s = Integer.toHexString(buffer[0] & 0xFF) + Integer.toHexString(buffer[1] & 0xFF) + Integer.toHexString(buffer[2] & 0xFF); switch (s) { //GBK,GB2312对应均为d5cbba,统一当成GB2312解析 case "d5cbba": charSet = "GB2312"; break; case "efbbbf": charSet = "UTF-8"; break; default: charSet = "GB2312"; break; } return charSet; } / * 读取CSV文件内容 * * @param inputStream 文件存放的路径,如:D:/csv/xxx.csv * @return List 
  
    */ public static List 
   
     > readCSVFileData(InputStream inputStream, String csvCode,Map 
    
      columns, List 
     
       headers) { List 
      
        > resultList = new ArrayList<>(); CsvReader reader = null; try { // 创建CSV读对象 例如:CsvReader(文件路径,分隔符,编码格式); reader = new CsvReader(inputStream, ',', Charset.forName(csvCode)); if (reader != null) { // 跳过表头,如果需要表头的话,这句可以忽略 reader.readHeaders(); // 逐行读入除表头的数据 while (reader.readRecord()) { String[] datas = reader.getHeaders(); if (LogicUtil.isNotEmpty(datas) && datas.length > 0) { headers = Arrays.asList(datas); } Map 
       
         stringObjectMap = new HashMap<>(); String[] data = reader.getValues(); for (int i = 0; i < headers.size(); i++) { if (i >= data.length) { stringObjectMap.put(columns.get(headers.get(i)), ""); } else { stringObjectMap.put(columns.get(headers.get(i)), data[i]); } } resultList.add(stringObjectMap); } if (!resultList.isEmpty()) { // 数组转对象 return resultList; } } } catch (Exception e) { } finally { if (reader != null) { reader.close(); } } return Collections.emptyList(); } 
        
       
      
     
    
  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215824.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:05
下一篇 2026年3月18日 下午1:05


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号