http zip压缩文件读取和解压

准备每次从输入流读取10k,但实际每次读取长度并不总是10k,甚至可能为0,三次测试结果如下:

第一次运行结果(read 10次):

ContentLength:52450

7872

88

10240

10240

176

3472

3472

10240

3472

3178

文件名称:nvdcve-2.0-modified.xml

文件大小:711356

第二次运行结果(read 11次):

ContentLength:52450

7872

6944

3472

3472

6944

3472

3472

3472

6944

3472

2914

文件名称:nvdcve-2.0-modified.xml

文件大小:711356

第三次运行结果(read 10次):

ContentLength:52450

7872

3472

3472

3472

3472

9660

10240

10240

220

330

文件名称:nvdcve-2.0-modified.xml

文件大小:711356

URL url = new URL("http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-Modified.xml.zip");
//sun.net.www.protocol.http.HttpURLConnection
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("User-Agent", "Mozilla/5.0 Chrome/31.0.1650.63 Safari/537.36");

/*1、读取压缩文件流*/
System.out.println("ContentLength:" + con.getContentLength());
InputStream is = con.getInputStream();
int len = -1; byte[] b = new byte[10240];	//准备一次读入10k
ByteArrayOutputStream os = new ByteArrayOutputStream();
while ((len = is.read(b)) > -1) {
    System.out.println(len);	//每次读取长度并不总是10k
    os.write(b, 0, len);
}
con.disconnect();

/*2、解压,可以直接从URL连接的输入流解压ZipInputStream(con.getInputStream())*/
ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(os.toByteArray()));
ZipEntry ze = zis.getNextEntry();
System.out.println("文件名称:" + ze.getName());
ByteArrayOutputStream zos = new ByteArrayOutputStream();
while ((len = zis.read(b)) > -1) {
    zos.write(b, 0, len);
}
System.out.println("文件大小:" + zos.size());
//System.out.println(zos.toString());//打印文件内容
时间: 2024-08-26 08:04:44

http zip压缩文件读取和解压的相关文章

Android 下载zip压缩文件并解压

网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,在此记录一下下载zip文件并直接解压的方法. 其实也很简单,就是把下载文件和解压zip文件结合到一起.下面即代码: URLConnection connection; ZipInputStream zipIn = null; FileOutputStream fileOut = null; ZipEntry zipEntry = null; int readedBytes = 0; try { connection = mode

dedecms中提取的zip压缩文件操作类zip.class.php

从织梦DeDeCMS中提取的zip压缩文件操作类,包含zip文件压缩.解压缩.添加文件到压缩包中等多个实用的函数,注释详细方便使用. 下载:dedecms中提取的zip压缩文件操作类zip.class.php 包含的函数和简单的使用方法: 1.函数get_List($zip_name) ,函数作用:获取zip文件中的文件列表.函数参数 $zip_name  zip文件名.返回值 文件列表数组. 2.函数Add($files,$compact),函数作用:增加文件到压缩文件.函数参数 $files

php实现ZIP压缩文件解压缩

测试使用了两个办法都可以实现: 第一个:需要开启配置php_aip.dll 1 <?php 2 //需开启配置 php_zip.dll 3 //phpinfo(); 4 header("Content-type:text/html;charset=utf-8"); 5 6 function get_zip_originalsize($filename, $path) { 7 //先判断待解压的文件是否存在 8 if(!file_exists($filename)){ 9 die(

【Linux探索之旅】第四部分第一课:压缩文件,解压无压力

内容简介 1.第四部分第一课:压缩文件,解压无压力 2.第四部分第二课:SSH连接,安全快捷 压缩文件,解压无压力 最近小编因为换工作,从南法搬到巴黎.折腾了很久. 网络一直用的是公共的无线网,信号不行.无线上网的box盒子已经说通网了,但我觉得墙上的线有问题.反正就是用不了自己的告诉WiFI盒子. 而且还要继续找房子,刚上班第一周,诸多事情,所以最近停更了很久.不好意思. 不过,现在又重新开始啦.木啊哈哈哈~ 百足之虫,死而不僵... 第四部分我们会讲Linux网络方面的一些知识点.既然讲到网

Java—将文件打包为zip压缩文件

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipE

ASP.NET打包生成zip压缩文件

using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using Microsoft.Win32; using

Java ZIP压缩文件使用总结

做Java Web开发,有时候遇到将多个文件或者文件夹压缩成一个.zip文件,供前端下载.Java的JDK中提供一个java.util.zip的接口,供大家使用.如下图: 图上就是Java 的JDK提供的接口,但是压缩文件或者文件夹的时候,怎么使用上面的接口呢?下面我给出几个相关的接口,这些接口是下面压缩文件或者文件夹过程中使用到的. java.util.zip.ZipEntry; java.util.zip.ZipOutputStream; 下面的压缩过程主要是通过这两个接口压缩文件或者文件夹

最新Zip压缩文件漏洞,黑客可以触发目录遍历攻击

近日,国内某安全公司研究人员透露了一个关键漏洞的详细信息,该漏洞影响了许多生态系统中的数千个项目,黑客可以利用这些漏洞在目标系统上实现代码执行. 黑客是如何通过Zip压缩文件入侵攻击?被称为"ZipSlip"的问题是一个任意的文件覆盖漏洞,在从档案文件中提取文件时触发目录遍历攻击,并影响包括tar,jar,war,cpio,apk,rar和7z在内的大量压缩文件. 用Google,Oracle,IBM,Apache,亚马逊,Spring/Pivotal,Linkedin,Twitter

解压本地zip压缩文件

package com.lapel.activity.html; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * * @author