代码自己学习用~....
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();
}
}
}
分享到:
相关推荐
1. **准备虚拟机**:在进行压缩之前,需要确保虚拟机已经关闭,并且所有的应用程序都已保存并退出,以防止丢失数据。此外,最好进行一次磁盘碎片整理,因为压缩过程会依赖于磁盘的组织结构。 2. **运行预压缩工具**...
磁盘映像文件包含了磁盘上的所有数据,包括文件、文件夹、系统信息、启动扇区等。它是一个完整的、可读写的“快照”,可以在需要时用来恢复原始磁盘的状态。这在系统崩溃、病毒攻击或硬件故障后特别有用,因为它可以...
无损压缩的方法可以删除一些重复数据,减少了冗余数据,大大减少要在磁盘上保存的图像尺寸。达到在给定压缩比下实现最好的图像质量。 哈夫曼编码构造 Huffman 树的步骤如下: I. 根据给定的 n 个权值{w1,w2,wn}⋯...
6. **写入JPG文件**:将编码后的数据加上JPG文件头,形成符合JPG标准的文件结构,然后保存到磁盘。 在实际应用中,如“bmpToJpeg”这样的工具或库函数,会执行上述步骤来实现BMP到JPG的转换。开发人员可以根据需求...
随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,...
然而,如果该路径所在的磁盘分区不是固态硬盘(SSD),那么读写速度可能会受到影响,进而影响压缩效率。因此,建议将临时文件夹设置在SSD所在的磁盘分区上,或者选择一个读写速度较快的位置。 3. **禁用不必要的功能...
随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,...
rarfiles.lst 包含一个用户定义的文件列表,告诉 RAR 添加文件到固实压缩文件时的顺 序。它可以包含文件名通配符和指定项目 -$default。默认项目定义了这个文件中与 其他项目不相符时的顺序清单位置。 注释字符是...
与物理磁盘非常相似的是,这个RAM 磁盘可格式化,压缩以 及共享,这样它可以被网络上的其它计算机访问。 与RamDisk 的不同之处在于,RamDisk Plus加入了当服务器关机时能够自 动保存RAM 磁盘中内容的能力以及当...
从压缩包子文件的文件名称“获取本机上网(宽带)帐号、密码并自动保存到D盘的小工具.exe”来看,这是一个可执行文件,意味着用户只需双击运行,即可启动该工具并执行其功能。通常,这类小工具可能需要管理员权限...
整张磁盘可以直接复制到另一张磁盘上。 镜像文件检查。在保存镜像文件或者还原镜像文件中的数据前,您可以检查镜像文件是否完好。 日常安排程序。磁盘镜像创建时间可以计划,并采用无人看管模式执行。 频繁操作或...
- 错误处理:确保在压缩或解压缩过程中捕获并处理可能出现的错误,如文件不存在、磁盘空间不足等。 - 性能优化:如果处理大量文件,可能需要考虑批量处理或者多线程操作以提高效率。 - 安全性:使用安全的API避免...
### 为什么IE下载的Zip文件没有保存到计算机上 #### 故障现象 在使用Microsoft Internet Explorer进行Zip(.zip)文件下载时,用户可能会遇到以下情况之一: 1. **文件下载过程看似正常完成,但在使用文件压缩...
"SQL SERVER 2000压缩日志工具"的主要目标就是有效地管理和减小这些庞大的日志文件,将它们压缩到5-10M左右,以释放宝贵的磁盘空间。实现这一目标通常通过以下几种方法: 1. **日志截断**:这是最常见的日志文件...
- 图像保存:将压缩后的图像写回文件,可能支持多种格式。 5. 使用示例: 在Java程序中,可以创建`CompressImg`类的对象,调用其方法来压缩图片,例如: ```java CompressImg compresser = new CompressImg(); ...
rarfiles.lst 包含用户定义的文件列表,告诉RAR添加文件到固实压缩文件时的顺序。 它可以包含文件名通配符和指定项目-$default。默认项目定义了这个文件中与其他 项目不相符时的顺序清单位置。 注释字符是 ';'....
2. **创建引导环境**:将解压缩后的PQMagic文件夹复制到FAT32格式的分区,如C盘或D盘根目录,以便在DOS环境下运行。如果分区格式为NTFS,需要找到支持NTFS读写的DOS工具包。 3. **启动PQMagic**:使用光盘或软盘...
标题中的“物理写盘工具(可保存为IMG文件)”是指一种能够将数据直接写入到物理磁盘,并且能够创建IMG镜像文件的软件工具。这种工具在处理存储设备,尤其是进行软路由配置时非常实用。软路由是通过软件模拟路由器...
本项目专注于图片的压缩功能,提供了简单易用的API,可以对图片进行缩放和降质处理,并且支持批量操作。下面将详细介绍这个项目涉及的关键知识点。 1. **Java图像处理库**: - Java标准库中的`java.awt.image`和`...
- 在执行存储过程中,需要确保服务器上已经安装了WinRAR,并且路径正确。 - 如果需要更改备份文件的保存路径或格式,需修改存储过程中的相应参数。 - 为了安全起见,在生产环境中使用此存储过程前,建议先在测试环境...