首页 > 其他分享 >访问远程zip并解析csv

访问远程zip并解析csv

时间:2023-10-07 10:44:26浏览次数:64  
标签:解析 String zip connection close zin new orderNo csv

public List<Info> exportsCode(String orderNo) {

       
        List<Info> infoResponses = new ArrayList<Info>();

        String token = queryToken();
        if (StringUtils.isBlank(token)) {
            
            return exportsCode(orderNo);
        }

        String urlStr ="";
try {
            // 创建URL对象[请求路径]
            URL url = new URL(urlStr);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("GET");
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            String authString = "Bearer " + token;
            connection.setRequestProperty("Authorization", authString);
            connection.addRequestProperty("Content-Type", "application/json; charset=UTF-8");
            connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            // 连接
            connection.connect();
            // 发送请求
            int responseCode = connection.getResponseCode();
          
            if (responseCode != 200) {
                stringRedisTemplate.delete(ANNTO_JIANNANCHUN_TOKEN_CACHE);
                return exportsCode(orderNo);
            }
            InputStream inputStream = connection.getInputStream();

            ZipInputStream zin = new ZipInputStream(inputStream);
            BufferedInputStream bs = new BufferedInputStream(zin);
            ZipEntry ze;
            while ((ze = zin.getNextEntry()) != null) {
                if (!ze.isDirectory()) {
                    //文件读取处理
                    byte[] buffer = new byte[1024];
                    int len;
                    ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
                    while ((len = zin.read(buffer)) != -1) {
                        byteStream.write(buffer, 0, len);
                    }
                    // 关闭流
                    byteStream.close();

                    InputStream byteArrayInputStream = new ByteArrayInputStream(byteStream.toByteArray());
                    InputStreamReader in = new InputStreamReader(byteArrayInputStream, "gbk");
                    BufferedReader bufferedReader = new BufferedReader(in);
                    String line = null;
                    while ((line = bufferedReader.readLine()) != null) {
                        String[] split = line.split(",");
                        String co = splitResult(split[0]);
                        String barCode = splitResult(split[1]);
                        if ("平台标准密文".equals(co)) {
                            continue;
                        }
                        Info response = new Info();
                        response.setCo(co.trim());
                        response.setBarCode(barCode.trim());
                        infoResponses.add(response);
                    }
                    bufferedReader.close();
                    in.close();
                }
            }
            zin.close();
            bs.close();
            inputStream.close();
        } catch (Exception e) {
            logger.error(orderNo + "异常:{}", e);
        }
        return infoResponses;
    }
    private String splitResult(String once) {

        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < once.length(); i++) {
            if (once.charAt(i) != '"') {
                stringBuilder.append(once.charAt(i));
            }
        }
        return stringBuilder.toString();
    }

参考:https://blog.csdn.net/web15085599741/article/details/123574480

https://blog.csdn.net/weixin_39655220/article/details/93058079

标签:解析,String,zip,connection,close,zin,new,orderNo,csv
From: https://www.cnblogs.com/lanliying/p/17745768.html

相关文章

  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动......
  • 网络规划设计师真题解析--TCP慢启动拥塞避免机制
    TCP使用慢启动拥塞避免机制进行拥塞控制。当拥塞窗口大小为16时,发送节点出现超时未收到确认现象时,将采取的措施是(26)。再经过5轮后的拥塞窗口大小为(27)。26、A.将慢启动阈值设为16,将拥塞窗口设为8,并进入拥塞避免阶段B.将慢启动阈值设为16,将拥塞窗口设为1,并进入慢开始阶段C.将慢启动阈......
  • 数据库事务和隔离级别的解析
    什么是数据库中的事务,可以说事务就是一组原子性的SQL查询,独立的工作单元。我们的事务内的语句,要么全部执行成功,要么全部执行失败!事务要满足ACID特性,可以通过Commit提交一个事务,也可以使用Rollback进行回滚!下面我们就介绍一下事务的ACID特性。ACID特性原子性(actomicity)一个事......
  • 大数据与AI:解析智慧城市的幕后英雄
    文章目录1.智慧城市的定义与发展2.大数据:智慧城市的基石2.1大数据的概念与重要性2.2大数据的应用案例2.2.1智能交通管理2.2.2能源效率优化2.2.3城市规划与土地利用3.人工智能:智慧城市的大脑3.1人工智能的概念与重要性3.2人工智能的应用案例3.2.1智能垃圾分类3.2.2智能......
  • 计算机网络之DNS解析过程
    一、什么是DNSDNS(DomainNameSystem),域名解析系统,它的作用就是域名和IP相互映射。二、域名解析过程假设要查询www.baidu.com的IP地址:1、首先会查找浏览器缓存,看看能否找到www.baidu.com对应的IP地址,找到就直接返回;否则进行下一步。2、将请求发往本地DNS服务器,如果查找到也直接返回,......
  • top内容解析
     %user:表示用户态所使用CPU的百分比。%nice:表示使用nice命令对进程进行降级时CPU的百分比。%sys:表示内核进程使用的CPU百分比。%iowait:表示等待进行I/O所使用的CPU时间百分比。%irq:表示用于处理系统中断的CPU百分比。%soft:表示用于软件中断的CPU百......
  • MySQL详细解析之Clone插件
    文档课题:MySQL详细解析之Clone插件.系统:rhel7.3数据库:MySQL8.0.271、理论知识从MySQL8.0.17开始引入Clone插件,克隆插件允许从本地或远程MySQLServer克隆数据.克隆的数据存储在InnoDB中的schema(database)、table(表)、tablespaces(表空间)和datadictionarymetadata(数据字典元数......
  • 手动开发-简单的Spring基于注解配置的程序--源码解析
    在前文中《手动开发-简单的Spring基于XML配置的程序--源码解析》,我们是从XML配置文件中去读取bean对象信息,再在自己设计的容器中进行初始化,属性注入,最后通过getBean()方法进行返回。这篇文章,我们将基于注解的视角,实现简单的Spring容器。在这里我们还将做一些改动,前文我们是通过xml......
  • 解析类型参数
    原文在这里。由IanLanceTaylor发布于2023年9月26日slices包函数签名slices.Clone函数很简单:它返回一个任意类型切片的副本:funcClone[S~[]E,Eany](sS)S{returnappend(s[:0:0],s...)}这个方法有效的原因是:向容量为零的切片追加元素将分配一个新的底层......
  • slate源码解析(三)- 定位
    接口定义能够对于文字、段落乃至任何元素的精准定位并做出增删改查,都是在开发一款富文本编辑器时一项最基本也是最重要的功能之一。让我们先来看看Slate中对于如何在文档树中定位元素是怎么定义的[源码]:/***The`Location`interfaceisaunionofthewaystorefertoa......