Java实现GZIP文件压缩与解压缩实践

需积分: 17 2 下载量 140 浏览量 更新于2024-07-23 收藏 270KB DOC 举报
本篇文档是关于"JAVA文件压缩与解压缩实践"的报告,由袁渊撰写,他在成都信息工程学院计算机科学与技术专业攻读工学学士学位。报告的焦点在于探讨文件的无损压缩技术,特别是针对文件压缩与解压缩的实践应用。作者利用Java编程语言,结合GZIP算法,在Builder2006环境中实现了文件的压缩和解压功能。 在报告的主体部分,主函数展示了如何使用Java进行文件压缩的代码实例。该方法首先检查命令行参数的有效性,然后通过FileInputStream打开待压缩文件,接着创建GZIPOutputStream进行压缩操作。通过循环读取输入文件的字节,并逐块写入压缩流,直到读取到文件末尾。压缩完成后,确保所有输入输出流被正确关闭,以释放系统资源。 文件压缩的重要性在于它能有效地解决在磁盘空间有限的情况下,存储大量数据的问题。随着互联网的发展,数据传输量增大,文件体积过大可能会导致网络带宽压力增大,因此压缩技术在此背景下显得尤为重要。报告还提及了文件压缩的分类,常见的无损压缩格式如GZIP,以及LZ77字典算法、懒惰匹配算法和Huffman编码算法等常用的压缩算法。 关键词包括"压缩"、"解压缩"、"GZIP"和"Java",这表明本研究的重点是如何使用Java中的GZIP库来实现高效的数据压缩和解压缩,以满足不同场景下的数据存储和传输需求。这份报告提供了一个实用的工具,让用户能够方便地对文件进行压缩或解压操作,以适应现代信息技术环境中的数据管理挑战。

import java.sql.SQLOutput; import java.util.* ; import java.util.zip.; import java.lang. ; import java.io.* ; class Unzip { byte doc[] = null; //存储解压缩数据的缓冲字节数组 String Filename = null; //压缩文件名字符串 String UnZipPath = null; //解压缩路径字符串 //指定压缩文件名和解压缩路径的构造方法 public Unzip(String filename, String unZipPath) { this.Filename = filename; this.UnZipPath = unZipPath; this.setUnZipPath(this.UnZipPath); } private void setUnZipPath(String unZipPath) { } public Unzip(String filename) { //只指定压缩文件名的构造方法 this.Filename = new String(filename); this.UnZipPath = null; this.setUnZipPath(this.UnZipPath); } private void setUnzippath(String unZipPath) { if (unZipPath.endsWith("\")) { this.UnZipPath = new String(unZipPath); } else { this.UnZipPath = new String(unZipPath + "\"); } } public void doUnZip() { try { ZipInputStream zipis = new ZipInputStream(new FileInputStream(Filename)); ZipEntry fEntry = null; while ((fEntry = zipis.getNextEntry()) != null) { if (fEntry.isDirectory()) { checkFilePath(UnZipPath + fEntry.getName()); } else { String fname = new String(UnZipPath + fEntry.getName()); try { FileOutputStream out = new FileOutputStream(fname); doc = new byte[512]; int n; while ((n = zipis.read(doc, 0, 512)) != -1) { out.write(doc, 0, n); } out.close(); out = null; doc = null; } catch (Exception ex) { } } } zipis.close(); } catch(IOException ioe) { System.out.println(ioe); } } private void checkFilePath (String dirName) throws IOException { File dir = new File(dirName); if (!dir.exists()) { dir.mkdirs(); } } }public class UnZipTester { public static void main(String[] args) { String zipFile = args[0]; // String zipFile = "D:\JAVA\Wetermelon.zip"; String unZipPath = args[1] + "\"; // String unZipPath = "D:\world"; Unzip myZip= new Unzip(zipFile, unZipPath);//创建-一个Unzip类的实例 myZip.doUnZip(); } }怎么填main方法参数,代码有错吗,详细说说

2023-05-24 上传