`
wen_pp
  • 浏览: 23605 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

解析zip文件-不生成临时文件的办法

    博客分类:
  • zip
阅读更多
package com.test;

import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;





public class ReadData {
	 public static void main(String args[])throws Exception{  
		         File f = new File("/home/upload/TwitterBig.zip");  
		         InputStream in = new FileInputStream(f);  
		         byte bytes[]=new byte[(int)f.length()];     //创建合适文件大小的数组  
		         in.read(bytes);    //读取文件中的内容到b[]数组  
		         in.close();  
		        
		         ByteArrayInputStream fis = new ByteArrayInputStream(bytes); 
		         ZipInputStream zis = new ZipInputStream(fis);
		         
			     ZipEntry ze = null;
			     
			     while((ze = zis.getNextEntry()) != null){
			        	String name = ze.getName();
			        	System.out.println("File name****"+ze.getName());	
			        				        	
						long size = ze.getSize();
								        	
						byte[] binary = readZipEntry(zis,size);
			        	writeFile(binary,"/home/upload/parese/"+ze.getName());			        	
			     }
		         
		         
	 }  
	 
		private static byte[] readZipEntry(ZipInputStream zipIn, long size)
				throws Exception {
			ByteArrayOutputStream output = new ByteArrayOutputStream();
			int oneByte = -1;
			long offset = 0L;			
			
			try {								
				while ((oneByte = zipIn.read()) > -1) {
					output.write((byte) oneByte);
					offset++;
					if (offset == size) {
						break;
					}
				}
			} finally {
				output.close();
			}
			return output.toByteArray();
		}
	 
		private static void writeFile(byte[] content, String filename) throws IOException {
			 
			File file = new File(filename);
	 
			if (!file.exists()) {
				file.createNewFile();
			}
	 
			FileOutputStream fop = new FileOutputStream(file);
			BufferedOutputStream buff = new BufferedOutputStream(fop);		
	 
			buff.write(content);
			buff.flush();
			buff.close(); 
		}
}

分享到:
评论
2 楼 wen_pp 2015-01-05  
PrinceXR 写道
如果zip包里文件名为中文zis.getNextEntry()这句话会不会报错?

哦,这个没有试过中文。英文我们的项目是英文的
1 楼 PrinceXR 2014-08-06  
如果zip包里文件名为中文zis.getNextEntry()这句话会不会报错?

相关推荐

    导出zip前后端完整方法

    本主题聚焦于"导出zip前后端完整方法",这涉及到后端生成zip文件、通过流传输到前端,以及前端如何下载和处理这些文件。下面我们将详细探讨这些关键知识点。 1. **压缩技术**: - **Zip格式**:Zip是广泛使用的...

    清除所有lastUpdated文件-win-mac-linux.zip

    标题“清除所有lastUpdated文件-win-mac-linux.zip”表明这是一个跨平台的解决方案,用于清理Windows、Mac和Linux操作系统上的Maven本地仓库中的所有`.lastUpdated`文件。这个压缩包包含了执行此操作的脚本,使得...

    Interactive Html Bom For AD-master-AD-快速BOM生成工具.zip

    Initialize.bat可能是用来设置环境变量或运行必要的安装步骤,而UnInitialize.bat则可能用于撤销这些操作,例如删除临时文件或恢复初始状态。 2. **config.ini**:这是一个配置文件,存储了工具的参数和设置。用户...

    FTP上传文件压缩文件生成CSV文件

    在这个项目中,首先,CSVUtils将生成或处理CSV文件,然后FileZipUtils将这些CSV文件压缩成一个ZIP文件。接着,FTPUtils使用FTP协议将这个ZIP文件上传到远程FTP服务器。IOUtil则在整个过程中提供辅助的I/O操作,例如...

    静态文件生成根目录下首页插入.zip

    总之,这款“静态文件生成根目录下首页插入.zip”软件旨在帮助用户简化SEO工作,提高网站在搜索引擎中的表现。正确使用并结合其他SEO策略,可以显著提升网站的在线可见度和流量。在使用前,务必了解软件的使用方法和...

    commons-fileupload-1.4-bin.zip

    标题中的"commons-fileupload-1.4-bin.zip"表明这是一个包含Apache Commons FileUpload 1.4版本的二进制文件包,而描述中的"fileupload-1.4"进一步确认了这个版本号。 Apache Commons FileUpload的主要功能在于解析...

    apache-tomcat-9.0.2-windows-x64.zip

    5. **temp**:Tomcat运行过程中临时文件的存放位置。 6. **webapps**:默认的Web应用程序部署目录,任何放在这个目录下的符合WAR(Web ARchive)格式的应用会被自动部署。 7. **work**:这个目录存放了Tomcat处理...

    ZipFunc_src.zip_PKZip_zip_zip 压缩_压缩文件 提取_压缩文件提取

    4. **FileHeader.cpp**:ZIP文件中的每个文件都有对应的文件头,包含文件的基本信息,此文件可能处理这些文件头的解析和生成。 5. **AutoBuffer.cpp**:可能是一个动态缓冲区类,用于临时存储数据,在读写文件时...

    apache-tomcat-7.0.56.zip

    Tomcat作为JSP容器,负责解析JSP文件,生成对应的Servlet类,并执行其中的Java代码。 3. **Java EE(Enterprise Edition)支持**:尽管Tomcat是一个轻量级的应用服务器,但它实现了Java EE的部分规范,如Servlet和...

    MMS.zip_mms函数_生成彩信文件

    这些数据需要被读取并存储到内存或临时文件中。 2. **编码**:MMS中的多媒体数据需要进行编码,以便适应MMS协议的要求。这通常涉及到转换文件格式、压缩数据以及将数据分割成适合传输的小块。编码过程可能会用到...

    spl文件查看器.zip

    标题"spl文件查看器.zip"表明这是一个包含了用于查看SPL文件的软件工具,且该工具是以ZIP压缩格式提供的,通常ZIP文件用于归档和压缩多个文件,便于存储和传输。 描述中提到"Spl文件查看器,免安装,可以预览...

    基于PHP的ICO在线生成ICO文件源码.zip

    在【压缩包子文件的文件名称列表】中,"132707311800525976"看起来不像是标准的文件名,可能是某种编码或者随机生成的字符串,这通常用于临时文件或者数据库记录。在实际项目中,这可能是源码中的某个ID或时间戳,...

    pytorch-Learning-to-See-in-the-Dark-master.zip

    1. `.gitignore`:这是一个Git版本控制系统配置文件,用于指定在版本库中忽略哪些文件或文件夹,通常包含编译生成的临时文件、日志文件等。 2. `LICENSE`:该项目的许可协议,可能是MIT、Apache等开源许可证,允许...

    commons-fileupload-1.2.1-bin.zip

    本篇文章将详细解析`commons-fileupload-1.2.1-bin.zip`这个版本的组件,并探讨其在实际开发中的应用。 Apache Commons FileUpload 1.2.1是该组件的一个稳定版本,它提供了一套完善的API,用于从HTTP请求中分离出...

    nginx-upload-module-master.zip

    如果一切正常,Nginx会根据配置删除临时文件(`upload_cleanup on_success`)。 5. **反馈结果**:后端应用服务器返回处理结果,Nginx再将结果返回给客户端。 **四、安全与优化** 1. **限速与限流**:为了防止DoS...

    商业编程-源码-文件捆绑器程序源代码.zip

    2. 文件打包与解包算法:为了有效地存储和恢复捆绑的文件,源码可能实现了某种压缩算法(如ZIP、7z或自定义格式),以减少文件大小并提高传输效率。 3. 执行文件构造:捆绑器需要生成一个能够正确运行的可执行文件...

    xpack-v1.0.2.zip

    .gitignore文件则是Git版本控制系统的一个配置文件,它定义了在版本控制中应该忽略的文件类型或目录,通常是为了避免将构建生成的临时文件或个人配置文件纳入版本管理。 总的来说,XPack v1.0.2是一个强大且全面的...

    ASP实例开发源码-文件批量上传客户端asp免费组件.zip

    另一方面,"132676206970344332"这个文件可能是一个动态生成的临时文件或者组件的核心代码,其具体用途需要查看文件内容才能确定。 在ASP中,文件上传通常涉及到HTTP协议中的multipart/form-data编码类型,以及...

    jsp+servlet实现文件上传和下载

    `DiskFileItemFactory`用于配置临时存储文件的位置,`ServletFileUpload`解析请求中的文件项。 - **处理文件**:遍历解析出的`FileItem`对象,如果是普通字段,则读取其值;如果是文件,则写入服务器的指定目录。 ...

    ASP源码—在线文件上传.zip

    由于信息不全,我们无法直接解析出具体文件类型和内容,但可以推测这个数字可能代表某个特定的时间戳,或者是一个随机生成的临时文件名。 关于在线文件上传的知识点: 1. **文件上传表单**:在ASP中,需要创建一个...

Global site tag (gtag.js) - Google Analytics