`
huang5787826
  • 浏览: 46728 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

压缩并且保存到磁盘上

阅读更多
代码自己学习用~....
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

import sun.misc.BASE64Encoder;

public class ZipUtil {

	public static final byte[] compress(String str, String fileName) {
		if (str == null)
			return null;
		byte[] compressed;
		ByteArrayOutputStream out = null;
		ZipOutputStream zout = null;
		try {
			out = new ByteArrayOutputStream();
			zout = new ZipOutputStream(out);
			zout.putNextEntry(new ZipEntry(fileName));
			zout.write(str.getBytes());
			zout.closeEntry();
			zout.finish();
			compressed = out.toByteArray();
		} catch (IOException e) {
			compressed = null;
		} finally {
			if (zout != null) {
				try {
					zout.close();
				} catch (IOException e) {
				}
			}
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
				}
			}
		}
		return compressed;
	}

	/**
	 * 将压缩后的 byte[] 数据解压缩
	 * 
	 * @param compressed
	 *            压缩后的 byte[] 数据
	 * @return 解压后的字符串
	 */
	public static final String decompress(byte[] compressed) {
		if (compressed == null)
			return null;
		ByteArrayOutputStream out = null;
		ByteArrayInputStream in = null;
		ZipInputStream zin = null;
		String decompressed;
		try {
			out = new ByteArrayOutputStream();
			in = new ByteArrayInputStream(compressed);
			zin = new ZipInputStream(in);
			ZipEntry entry = zin.getNextEntry();
			byte[] buffer = new byte[1024];
			int offset = -1;
			while ((offset = zin.read(buffer)) != -1) {
				out.write(buffer, 0, offset);
			}
			decompressed = out.toString();
		} catch (IOException e) {
			decompressed = null;
		} finally {
			if (zin != null) {
				try {
					zin.close();
				} catch (IOException e) {
				}
			}
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
				}
			}
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
				}
			}
		}
		return decompressed;
	}
	
	public static void testSaveZip(byte[] b, String fileName) throws IOException {
		String outFilename = "c:\\"+fileName+".zip";  
		byte[] buf = new byte[1024];
		FileOutputStream out = new FileOutputStream(outFilename);
		ByteArrayInputStream fos=new ByteArrayInputStream(b);
		int len = -1;
		while ((len = fos.read(buf))!=-1)
		out.write(buf, 0, len);
		out.close();
	}
	
	public static void main(String[] args) {
		String testStr = "测试,zip!";
		byte[] b = compress(testStr, "data");
		BASE64Encoder enc=new BASE64Encoder();
		System.out.println(enc.encode(b));
		String deCompress = decompress(b);
		System.out.println("--------------------------------------------");
		System.out.println(deCompress);
		try {
			testSaveZip(b,"data");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
分享到:
评论

相关推荐

    microsoft vpc磁盘压缩程序

    1. **准备虚拟机**:在进行压缩之前,需要确保虚拟机已经关闭,并且所有的应用程序都已保存并退出,以防止丢失数据。此外,最好进行一次磁盘碎片整理,因为压缩过程会依赖于磁盘的组织结构。 2. **运行预压缩工具**...

    创建磁盘映像文件的工具

    磁盘映像文件包含了磁盘上的所有数据,包括文件、文件夹、系统信息、启动扇区等。它是一个完整的、可读写的“快照”,可以在需要时用来恢复原始磁盘的状态。这在系统崩溃、病毒攻击或硬件故障后特别有用,因为它可以...

    哈夫曼编码实现图像压缩

    无损压缩的方法可以删除一些重复数据,减少了冗余数据,大大减少要在磁盘上保存的图像尺寸。达到在给定压缩比下实现最好的图像质量。 哈夫曼编码构造 Huffman 树的步骤如下: I. 根据给定的 n 个权值{w1,w2,wn}⋯...

    BMP压缩为JPG

    6. **写入JPG文件**:将编码后的数据加上JPG文件头,形成符合JPG标准的文件结构,然后保存到磁盘。 在实际应用中,如“bmpToJpeg”这样的工具或库函数,会执行上述步骤来实现BMP到JPG的转换。开发人员可以根据需求...

    JAVA文件压缩与解压缩实践(源代码+文档).zip

    随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,...

    关于压缩更快的一个窍门

    然而,如果该路径所在的磁盘分区不是固态硬盘(SSD),那么读写速度可能会受到影响,进而影响压缩效率。因此,建议将临时文件夹设置在SSD所在的磁盘分区上,或者选择一个读写速度较快的位置。 3. **禁用不必要的功能...

    毕业设计-JAVA文件压缩与解压缩实践(源代码+论文)

    随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,...

    rar压缩软件.rar

    rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是...

    SuperSpeedRamDiskPlus(虚拟磁盘) 32-64位

    与物理磁盘非常相似的是,这个RAM 磁盘可格式化,压缩以 及共享,这样它可以被网络上的其它计算机访问。 与RamDisk 的不同之处在于,RamDisk Plus加入了当服务器关机时能够自 动保存RAM 磁盘中内容的能力以及当...

    获取本机上网(宽带)帐号、密码并自动保存到D盘的小工具

    从压缩包子文件的文件名称“获取本机上网(宽带)帐号、密码并自动保存到D盘的小工具.exe”来看,这是一个可执行文件,意味着用户只需双击运行,即可启动该工具并执行其功能。通常,这类小工具可能需要管理员权限...

    磁盘镜像工具 R-Drive Image Technician 6.3 Build 6304 中文多语免费版.zip

    整张磁盘可以直接复制到另一张磁盘上。 镜像文件检查。在保存镜像文件或者还原镜像文件中的数据前,您可以检查镜像文件是否完好。 日常安排程序。磁盘镜像创建时间可以计划,并采用无人看管模式执行。 频繁操作或...

    zip、unzip 解压缩工具 for C++、WIN32.zip

    - 错误处理:确保在压缩或解压缩过程中捕获并处理可能出现的错误,如文件不存在、磁盘空间不足等。 - 性能优化:如果处理大量文件,可能需要考虑批量处理或者多线程操作以提高效率。 - 安全性:使用安全的API避免...

    为什么IE下载的 Zip 文件没有保存到计算机上.docx

    ### 为什么IE下载的Zip文件没有保存到计算机上 #### 故障现象 在使用Microsoft Internet Explorer进行Zip(.zip)文件下载时,用户可能会遇到以下情况之一: 1. **文件下载过程看似正常完成,但在使用文件压缩...

    SQL SERVER 2000压缩日志工具

    "SQL SERVER 2000压缩日志工具"的主要目标就是有效地管理和减小这些庞大的日志文件,将它们压缩到5-10M左右,以释放宝贵的磁盘空间。实现这一目标通常通过以下几种方法: 1. **日志截断**:这是最常见的日志文件...

    图片压缩工具类

    - 图像保存:将压缩后的图像写回文件,可能支持多种格式。 5. 使用示例: 在Java程序中,可以创建`CompressImg`类的对象,调用其方法来压缩图片,例如: ```java CompressImg compresser = new CompressImg(); ...

    中文简体压缩软件RAR 6.0

    rarfiles.lst 包含用户定义的文件列表,告诉RAR添加文件到固实压缩文件时的顺序。 它可以包含文件名通配符和指定项目-$default。默认项目定义了这个文件中与其他 项目不相符时的顺序清单位置。 注释字符是 ';'....

    PQMagic调整磁盘分区容量大小.docx

    2. **创建引导环境**:将解压缩后的PQMagic文件夹复制到FAT32格式的分区,如C盘或D盘根目录,以便在DOS环境下运行。如果分区格式为NTFS,需要找到支持NTFS读写的DOS工具包。 3. **启动PQMagic**:使用光盘或软盘...

    物理写盘工具(可保存为IMG文件)

    标题中的“物理写盘工具(可保存为IMG文件)”是指一种能够将数据直接写入到物理磁盘,并且能够创建IMG镜像文件的软件工具。这种工具在处理存储设备,尤其是进行软路由配置时非常实用。软路由是通过软件模拟路由器...

    java web 图片压缩

    本项目专注于图片的压缩功能,提供了简单易用的API,可以对图片进行缩放和降质处理,并且支持批量操作。下面将详细介绍这个项目涉及的关键知识点。 1. **Java图像处理库**: - Java标准库中的`java.awt.image`和`...

    SQL2000自动备份 压缩 删除(备份文件)

    - 在执行存储过程中,需要确保服务器上已经安装了WinRAR,并且路径正确。 - 如果需要更改备份文件的保存路径或格式,需修改存储过程中的相应参数。 - 为了安全起见,在生产环境中使用此存储过程前,建议先在测试环境...

Global site tag (gtag.js) - Google Analytics