java:按行读取服务器压缩文件内容
来源:互联网 发布:长庚医院网络挂号查询 编辑:程序博客网 时间:2024/06/06 12:47
当前需求是从一台服务器上的一个目录读取所有压缩文件(文件名是未知的)的内容,从网上搜到的方法都不太完整,以下是本人总结的方法。此处传进来的路径只能是最终带文件名的路径,不能是目录。
由于压缩文件的名称都是未知的,只能通过遍历目录下所有文件名来读取文件内容,但是HttpURLConnection 连接无法遍历目录的文件名,所以在当前目录下加多一个txt文件用于保存当前目录下所有文件名称,每次先读取txt文件获取文件名拼接destUrl ,再调用以下的方法读取每个zip文件。
//destUrl 文件存放在服务器的路径 , 如http://192.168.XX.XX:8080/filename/xx.zip//filter 获取包含该内容的行 //contentType 编码格式 , 如 utf-8/gbk等 public static List getZipData(String destUrl, Object[] filter, String contentType) { if (T.isBlank(destUrl)) { return null; } List dataList = new ArrayList(); int len = -1; byte[] b = new byte[10240]; // 准备一次读入10k try { SocketAddress address = new InetSocketAddress(Config.getProxyHost(),Config.getProxyPort()); // 获取代理服务器地址、端口 Proxy proxy = new Proxy(Proxy.Type.HTTP, address); URL url = new URL(destUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy); // 通过代理访问 // 1 读取压缩文件流 InputStream is = conn.getInputStream(); ByteArrayOutputStream os = new ByteArrayOutputStream(); while ((len = is.read(b)) > -1) {// 每次读取长度并不总是10k os.write(b, 0, len); } // 2 解压,可以直接从URL连接的输入流解压 ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(os.toByteArray())); while ((zis.getNextEntry()) != null) { ByteArrayOutputStream zos = new ByteArrayOutputStream(); while ((len = zis.read(b)) > -1) { zos.write(b, 0, len); } InputStream in = new ByteArrayInputStream(zos.toByteArray()); BufferedReader buffer = new BufferedReader(new InputStreamReader(in, contentType)); String line = null; while ((line = buffer.readLine()) != null) { if (filter != null && filter.length > 0) {// 有过滤条件时返回满足条件的行 for (Object str : filter) { if (line.contains(str.toString())) { dataList.add(line.trim()); break; } } }else{ dataList.add(line.trim());// 无过滤条件时返回所有行 } } } return dataList; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } }
1 0
- java:按行读取服务器压缩文件内容
- java解压缩文件和不解压读取压缩文件中的文本文件内容
- Java 按行读取文本文件内容
- Java 按行读取文件内容
- java按行读取文件内容
- java按行读取txt中的内容
- java不解压读取linux服务器上的zip以及tar.gz压缩文件
- 压缩文件读取
- java直接读取.zip压缩文件(一)
- 使用volley读取压缩文件的内容(zip、gz)
- android 在不解压压缩文件的情况下,读取压缩文件内容
- java 从ftp服务器上 读取文件内容
- java按行读取文件内容并输出
- Java压缩文件和解压缩文件
- java 读取文件指定行的内容
- java以行读取txt文本内容
- Java JTextArea经行逐行读取内容
- 用java中的java.util.zip包读取压缩文件
- java condition使用及分析
- Linux内核编译的一个错误解决 ump/common/ump_kernel_common.o
- 连续特征进行离散化的方法介绍与应用例子
- 三.linux学习笔记-文件搜索命令
- golang开发的一个mysql连接代理池,支持多种语言客户端(PHP范例)
- java:按行读取服务器压缩文件内容
- IOS 将请求参数字典转换为参数字符串
- 安卓5.0后 getRunningAppProcesses返回列表为null的处理方法
- 冒泡排序
- CMakeFile命令之file
- String、StringBuffer、StringBuilder简单理解
- Understanding Play2 Iteratees for Normal Humans
- 怎么维护 SQLite
- 位运算-Number of 1 Bits(求一个十进制数字,它的二进制表示中有多少个 1(bit))