`
行者买刀
  • 浏览: 194693 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

控制层实现文件压缩与下载

 
阅读更多

     之前做的一个项目时遇到下载多个文件,要求先能够在压缩在一并下载.实现原理也很简单,主要就是利用Zip流进行压缩.

/**
	 * 多个文件
	 * 
	 * @param files
	 *            所要打包的文件列表
	 * @param outputStream
	 */
	public static void zipFile(List files, ZipOutputStream outputStream) {
		int size = files.size();
		for (int i = 0; i < size; i++) {
			File file = (File) files.get(i);
			zipFile(file, outputStream);
		}
	}

	/**
	 * 根据输入的文件与流对文件进行打包
	 */
	public static void zipFile(File inputFile, ZipOutputStream ouputStream) {
		try {
			if (inputFile.exists()) {
				if (inputFile.isFile()) {
					FileInputStream in = new FileInputStream(inputFile);
					BufferedInputStream bins = new BufferedInputStream(in, 512);
					ZipEntry entry = new ZipEntry(inputFile.getName());
					ouputStream.putNextEntry(entry);
					// 向压缩文件中输出数据
					int nNumber;
					byte[] buffer = new byte[512];
					while ((nNumber = bins.read(buffer)) != -1) {
						ouputStream.write(buffer, 0, nNumber);
						// 关闭创建的流对象
					}
					bins.close();
					in.close();
				} else {
					try {
						File[] files = inputFile.listFiles();
						for (int i = 0; i < files.length; i++) {
							zipFile(files[i], ouputStream);
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
		test(){
					File file = new File("temp.rar");
					if (!file.exists()) {
						file.createNewFile();
					}
					FileOutputStream fous = new FileOutputStream(file);
					ZipOutputStream zipOut = new ZipOutputStream(fous);
					zipFile(files, zipOut);
					zipOut.close();

}

 

分享到:
评论

相关推荐

    JavaWeb 实现多个文件压缩下载功能

    可以使用 Java 的 ZipOutputStream 类来实现文件的压缩。 ```java ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); // 将文件写入到压缩文件中 for (FileBean file : ...

    在单片机上实现的压缩代码

    9. **输入/输出(I/O)管理**:单片机的I/O接口通常比个人电脑简单,压缩和解压缩代码需要适应这些接口,可能需要编写特定的驱动程序或适配层来与外部设备交互。 10. **错误检测与恢复**:由于单片机环境可能不稳定,...

    基于PLC的压缩机自动控制系统.pdf

    现场控制层主要由PLC来完成控制任务,操作监控层则是通过工业计算机来实现控制参数的实时显示和操作。管理层包括数据库和局域网,管理人员可以通过这些技术手段来浏览实时和历史数据,并据此进行系统的优化。整个...

    sping学习压缩文件

    在这个"Spring学习压缩文件"中,我们可以深入理解Spring的核心概念以及如何在实际项目中应用它们。 首先,让我们从依赖注入(Dependency Injection,简称DI)开始。这是Spring框架的一个核心特性,它允许我们解耦...

    delphi做的文件上传下载服务器端

    2. **网络编程**:为了实现文件上传和下载,开发者需要掌握TCP/IP协议、HTTP或FTP等网络通信协议。HTTP通常用于Web应用程序,FTP则更常用于文件传输。理解这些协议的工作原理对于构建服务器端至关重要。 3. **多...

    文件压缩解压.zip易语言程序源码资源下载

    在这个“文件压缩解压.zip”压缩包中,包含的是易语言编写的程序源码,用于实现文件的压缩和解压缩功能。这个资源对于不同层次的学习者都非常有帮助,无论是学生进行毕业设计,还是程序员研究学习,或是新手自学者,...

    java将数据导入多个excel并压缩,亲测可用

    综上所述,实现“java将数据导入多个excel并压缩”的功能需要对Java的文件操作、Excel处理、文件压缩以及Web开发有深入的理解。通过Apache POI库处理Excel,结合Java内置的压缩API,我们可以创建一个高效且可扩展的...

    网络游戏-具有独立承载控制层网络中实现资源状态同步的方法.zip

    本压缩包文件“网络游戏-具有独立承载控制层网络中实现资源状态同步的方法.zip”包含了一份详细的方法说明,主要探讨了如何在这样的复杂架构下有效地进行资源状态同步。 首先,独立承载控制层网络是一种将游戏逻辑...

    基于神经网络的图像压缩运用matlab实现

    在图像处理领域,神经网络被广泛应用于图像压缩,因为它们能学习到图像的内在模式和结构,从而实现高效的数据编码。本项目“基于神经网络的图像压缩运用matlab实现”提供了一个简单的方法,帮助初学者了解如何利用...

    基于opencv的图像压缩

    例如,对于JPEG格式,可以调整质量系数来控制压缩程度和图像质量。 OpenCV还提供了许多图像处理函数,如直方图均衡化、滤波、色彩空间转换等,这些在压缩前后的图像预处理和后处理中都可能用到。例如,预处理可以...

    Yii 2文件下载

    标题提到的"Yii 2文件下载"可能指的是Yii 2.0框架的安装包或者相关的扩展或示例代码。 在描述中,我们看到“找了好久才找到的Yii2.0”,这可能暗示了Yii 2.0的相关资源并不总是容易找到,尤其对于初学者来说,可能...

    Python-压缩自动编码器的有损图像压缩

    在实际应用中,可以通过调整压缩率来控制图像的质量和压缩程度。 在完成训练后,我们可以将CAE模型部署,对新的图像进行压缩和解压缩。将压缩后的数据存储为二进制文件或特定格式(如JPEG、PNG等),以便于后续的...

    cpp-通过JNI实现对图片文件的压缩到达质量大小清晰度综合最优

    在IT行业中,C++语言以其高效性和灵活性被广泛应用于各种领域,...通过实践和调试这些代码,开发者可以更好地理解和掌握JNI在图像压缩中的应用,从而在实际项目中实现图片文件的高质量、小体积和高清晰度的综合优化。

    Dubbo实现的文件服务器系统(java)

    5. **ibo-file-dao**:数据访问对象,负责与数据库交互,实现文件信息的CRUD操作。 6. **ibo-file-pojo**:Plain Old Java Objects(简单Java对象),通常用于表示文件服务中的实体类,如`File`对象。 7. **ibo-file...

    matlab图像专题:54 DWHT编码实现编码压缩.zip

    在实际操作中,我们需要选择合适的小波基函数,例如Haar、Daubechies或Symlets等,以及分解层数来控制分析的精细程度。 在压缩步骤中,通常会使用量化策略来减少存储小波系数所需的位数。量化可以是均匀的,也可以...

    Android图片压缩结合多种压缩方式.zip

    本压缩包"Android图片压缩结合多种压缩方式.zip"提供了一种综合解决方案,它结合了尺寸压缩、质量压缩以及JNI(Java Native Interface)调用libjpeg库进行的压缩,旨在在保证图片清晰度的同时,将图片内存大小控制在...

    JAVA 根据Url把多文件打包成ZIP下载实例

    在这个过程中,我们可以使用 JAVA 的 URL 连接和 ZIP 压缩技术来实现文件的下载和打包。 在这个例子中,我们定义了一个工具类 `UrlFilesToZip`,它包含两个主要方法:`getImageFromURL` 和 `readInputStream`。`...

    GIF图片压缩

    - "汉化说明.txt"是该工具的中文说明文档,它可能包含如何使用该工具进行图片压缩的具体步骤和技巧,包括调整压缩级别、预览压缩效果等。 综上所述,GIF图片压缩涉及到多个技术层面,包括选择合适的压缩算法、优化...

    利用编译过的libjpeg库实现Android图片压缩的终极方案

    这些接口将在C/C++层实现,调用libjpeg库的功能。 4. **实现C/C++代码**:编写C/C++代码,包括初始化libjpeg库、设置压缩参数、读取和写入图像数据等操作。 5. **配置Android.mk/Android.bp**:在项目的jni目录下...

    STM32嵌入式实现智能家居控制系统完整工程.zip 本压缩文件是STM32

    压缩包中的"a.txt"文件可能是工程配置文档或代码注释,而"智能家居温控系统"可能是整个项目的源代码文件夹。源代码可能包括了初始化设置、传感器读取、数据处理、设备控制以及通信协议的实现。 总的来说,这个STM32...

Global site tag (gtag.js) - Google Analytics