`

java向压缩文件添加文件

    博客分类:
  • Java
阅读更多
package org.alfresco.repo.bom.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.Deflater;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;

public class AppendFileToCompressedFileUtil {
	
	private static final String compressedFilePath = "F:/chiang.zip";
	private static final String newCompressedFilePath = "F:/tdp.zip";
	private static final String appendFilePackage = "data";
	
	public void append(String appendFile) throws Exception{
		ZipOutputStream zos = null;
		InputStream input = null;
		File newCompressedFile = new File(newCompressedFilePath); 
		if (newCompressedFile.exists()) { 
			newCompressedFile.delete(); 
		}
		try {
			ZipFile compressedFile = new ZipFile(compressedFilePath, "GBK");
			//System.out.println(compressedFile.getEncoding());
			zos = new ZipOutputStream(new FileOutputStream(newCompressedFilePath));
			zos.setEncoding("GBK");
			zos.setComment("Bale tdp!");
			zos.setLevel(Deflater.BEST_COMPRESSION);
			zos.setMethod(Deflater.DEFLATED);
			//
			if (!"".equals(appendFile)) {
				File f = new File(appendFile);
				ZipEntry pag = new ZipEntry(appendFilePackage+f.separator);
				zos.putNextEntry(pag);
				ZipEntry fileEntry = new ZipEntry(appendFilePackage+f.separator+f.getName());
				zos.putNextEntry(fileEntry);
				input = new FileInputStream(f);
				startCopy(zos, input);
			}
			Enumeration<? extends ZipEntry> e = compressedFile.getEntries();
			while (e.hasMoreElements()) {
				ZipEntry entry = e.nextElement();
				zos.putNextEntry(entry);
				if (!entry.isDirectory()) {
					startCopy(zos, compressedFile.getInputStream(entry));
				}
				zos.closeEntry();
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(zos!=null)
				zos.close();
		}
	}
	
	public void startCopy(ZipOutputStream zos,InputStream input) throws Exception{
		int data = 0 ;
		try {
			while ((data=input.read())!=-1) {
				zos.write(data);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(input!=null)
				input.close();
		}
	}
	// main test method
	public static void main(String[] args) throws Exception{
		AppendFileToCompressedFileUtil a = new AppendFileToCompressedFileUtil();
		String append = "F:/你现在好吗.txt";
		a.append(append);
	}
}

 

分享到:
评论

相关推荐

    基于Java向zip压缩包追加文件

    在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...

    Java把文件压缩成zip

    ### Java将文件压缩为ZIP的方法 #### 知识点概览 本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件...

    java压缩zip文件解决中文乱码问题

    zipEntry.setComment("压缩文件"); // 可以添加注释,同样需要指定字符集 zos.putNextEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer...

    windows 下java调用winrar压缩文件为rar 格式

    要在Java中处理RAR格式的压缩文件,由于Java标准库不直接支持RAR格式,我们需要引入第三方库。一个常用的库是`com.igormaznitsa:nativesharp-jni`,它封装了WinRAR的API,使得Java可以调用WinRAR的功能。安装该库后...

    java压缩文件以及文件夹

    本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...

    java多文件压缩成zip文件并实现下载

    2. **添加文件到ZIP**:对于每个要压缩的文件,创建一个`ZipEntry`,设置其名称,并使用`ZipOutputStream`的`putNextEntry`方法开始一个新的ZIP条目。接着,读取源文件内容并写入`ZipOutputStream`。 ```java File ...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API(Java Archive API, JAR)** Java标准库提供了一个强大的API来处理各种类型的档案文件,包括ZIP格式。`java....

    java文件压缩源码

    Java文件压缩源码是Java开发中常见的需求,它允许开发者将多个文件或目录打包成一个压缩文件,方便存储和传输。在本例中,我们提到的实现方式是通过使用Apache Ant库中的`org.apache.tools.ant.taskdefs.Zip`类。...

    java操作压缩文件和解压文件实例代码(经测试)

    在Java编程语言中,处理压缩文件(如ZIP或GZ格式)是一项常见的任务。本示例将探讨如何使用Java API来实现文件的压缩和解压缩功能。提供的压缩包包含三个文件:ant.jar(一个用于构建工具的库)、ZipFileList.java...

    java实现视频压缩

    在提供的压缩包子文件"java-视频压缩"中,可能包含了实现上述步骤的源代码、示例或者相关的第三方库。通过研究这些文件,开发者可以学习如何在Java环境中实现视频压缩的完整流程,并根据需求进行定制和优化。 总之...

    java压缩文件解压缩和文件的压缩

    2. **压缩文件**: 使用`ZipOutputStream`,你可以将文件或目录添加到ZIP文件中。首先,创建一个`ZipOutputStream`实例,然后通过调用`putNextEntry`方法开始新的`ZipEntry`,接着使用`write`方法写入文件数据,最后...

    java后台批量下载文件并压缩成zip下载的方法

    Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...

    JAVA实现的文件压缩

    - 添加文件:对每个要添加到ZIP文件的文件,创建一个`FileInputStream`,然后使用`ZipOutputStream`的`putNextEntry`方法打开新的ZIP条目,接着将文件内容写入`ZipOutputStream`,最后调用`closeEntry`关闭条目。...

    jdk1.8压缩文件rar zip java8压缩版

    JDK 1.8的压缩文件通常包含Java运行时环境(JRE)、开发工具(如编译器javac、jar打包工具等)以及其他必要的库文件。 在Java 8中,主要的更新和改进包括: 1. **Lambda表达式**:这是Java 8最显著的特性,引入了...

    java 文件压缩处理

    要压缩文件,你需要创建一个`ZipOutputStream`实例,然后通过它来添加`ZipEntry`。以下是一个基本的示例: ```java File fileToCompress = new File("path_to_your_file"); FileInputStream fis = new ...

    java ftp上传 下载 文件压缩解压

    其中,`addFilesToZip`方法递归地将目录中的每个文件添加到ZIP流。 ```java private void addFilesToZip(File file, ZipOutputStream zos, String path) { if (file.isDirectory()) { File[] files = file.list...

    java导出csv文件并压缩(含下载提示功能)

    在Java编程环境中,导出CSV(逗号分隔值)文件并将其压缩成ZIP格式是一项常见的任务,特别是在处理大量数据时。CSV文件因其简洁、通用的格式,常用于数据交换和存储。本教程将深入讲解如何实现这个过程,并提供前...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    java压缩文件生成带密码的zip包,解压带密码的zip包的工具类

    压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....

    java 直接压缩文件或文件目录

    在Java编程语言中,压缩文件或文件目录是一项常见的任务,主要使用了Java的`java.util.zip`包中的类。这个包提供了对ZIP和GZIP格式的支持。本文将深入讲解如何利用Java来直接压缩文件或文件目录,以及如何进行相关的...

Global site tag (gtag.js) - Google Analytics