栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java登录远程sftp服务器,不进行解压,并按条读取Zip压缩文件中的内容

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java登录远程sftp服务器,不进行解压,并按条读取Zip压缩文件中的内容

                if (someSftphcFtp != null){
                    //登录sftp
                    sftp = new SFTPUtil(someSftphcFtp .getFtpusername(), someSftphcFtp .getFtppassword(), someSftphcFtp .getFtpip(), someSftphcFtp .getFtpport());

                    try {
                        sftp.login();
                        log.info("sftp->"+"用户名:"+someSftphcFtp .getFtpusername()+",密码是:"+someSftphcFtp .getFtppassword()+",ip是:"+someSftphcFtp .getFtpip()+",端口是:"+someSftphcFtp .getFtpport());
                    } catch (Exception e) {
                        log.error("登录sftp服务异常");
                        throw new Exception();
                    }
                }
                byte[] filebyte = new byte[0];
                        try {
                        //folderpath文件目录,zipFolderpath压缩文件名
                            filebyte = sftp.download(folderpath, zipFolderpath);
                            log.info("读取文件成功");
                        } catch (Exception e) {
                            log.error("下载压缩文件出错");
                        }
                InputStream inputStream = new ByteArrayInputStream(filebyte);
                
                 //获取ZIP输入流(一定要指定字符集Charset.forName("GBK")否则会报java.lang.IllegalArgumentException: MALFORMED)
                ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(inputStream), Charset.forName("GBK"));
                
                  //定义ZipEntry置为null,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题
                ZipEntry ze = null;
                while ((ze = zipInputStream.getNextEntry()) != null) {
                 System.out.println("文件名:" + ze.getName() + " 文件大小:" + ze.getSize() + " bytes");
                   


                    //读取,java.util.zip.ZipInputStream.getNextEntry()方法读取下一个ZIP文件条目并将该流定位在条目数据的开头。
                    BufferedReader br = new BufferedReader(new InputStreamReader(zipInputStream, Charset.forName("UTF-8")));

                    String line;
                    StringBuffer stringBuffer = new StringBuffer();
                    //内容不为空,输出
                    while ((line = br.readLine()) != null) {

                        stringBuffer.append(line);
//                        System.out.println(line);

                    }
                    String str = stringBuffer.toString();
                     System.out.println("当前压缩包文件中其中一个文件的内容:"+str);
                     //可以使用ze.getName()对文件名判断,来归类对应的文件
                    }
                    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号