package com;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import de.innosystec.unrar.exception.RarException;
public class Test3 {
public static void unzipFiles(String filesFolder, String outputDirectory) {
File zipFolder = new File(filesFolder);
String zipFiles[];
String zipFileAbs;
try {
zipFiles = zipFolder.list();
for (int i = 0; i < zipFiles.length; i++) {
if (zipFiles[i].length() == (zipFiles[i].lastIndexOf(".zip") + 4)) {
zipFileAbs = filesFolder + File.separator + zipFiles[i];
unZip(zipFileAbs, outputDirectory);
}
}
} catch (SecurityException ex) {
ex.printStackTrace();
}
}
private static void getDir(String directory, String subDirectory) {
String dir[];
File fileDir = new File(directory);
try {
if (subDirectory == "" && fileDir.exists() != true)
fileDir.mkdir();
else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (subFile.exists() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void unZip(String zipFileName, String outputDirectory) {
try {
ZipFile zipFile = new ZipFile(zipFileName);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
getDir(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
} else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1) {
getDir(outputDirectory, fileName.substring(0, fileName
.lastIndexOf("/")));
fileName = fileName.substring(
fileName.lastIndexOf("/") + 1, fileName
.length());
}
File f = new File(outputDirectory + File.separator
+ zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ((c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
public static void main(String[] ar) throws RarException, IOException {
unzipFiles("D:\\test", "D:\\test");
}
}
分享到:
相关推荐
本文将深入探讨这一主题,从基本概念、常见的压缩格式、压缩原理到如何进行压缩与解压,以及相关的实用工具。 首先,文件压缩是为了减小文件的大小,使其更易于存储和传输。在计算机中,文件由二进制数据组成,压缩...
文件压缩主要是通过算法找出文件中重复的数据模式,然后用更短的编码来表示这些模式,从而减少文件的大小。常见的压缩算法有霍夫曼编码(Huffman Coding)、LZ77(Lempel-Ziv)和DEFLATE等。C++中并没有内置的压缩库...
在标题提到的“将文件压缩的源码”中,我们可以深入探讨文件压缩的基本原理、常用的压缩算法以及如何通过编程实现文件压缩。 首先,我们要了解文件压缩的原理。文件中的数据通常包含大量的冗余信息,比如重复的字符...
结合Excel操作文件的压缩和解压,可能意味着你还需要了解如何在VB6中调用Excel对象模型,例如,使用`CreateObject`函数创建Excel实例,然后调用其方法和属性来操作Excel文件。不过,这个话题已经超出了当前文件压缩...
文件压缩主要是通过算法找出文件中的冗余数据,然后用更短的编码表示,从而减少存储空间。常见的压缩算法有LZ77、LZ78、Huffman编码、DEFLATE(用于ZIP和GZIP)以及Burrows-Wheeler Transform(用于BZip2)等。...
解压缩全能王提供对apk文件的支持,意味着用户可以直接在软件中打开和管理这些移动应用文件,无论是下载的还是从其他压缩包解压出来的。 解压缩全能王电脑版与手机版apk结合,意味着用户可以在桌面和移动设备上无缝...
总结来说,处理魔兽3地图文件及MPQ文件的查看和解压,需要掌握C++编程、文件I/O操作、二进制解析以及可能的压缩库的使用。通过实践,我们可以深入理解游戏文件的内部结构,同时锻炼我们的编程能力。在这个过程中,...
控制台 RAR 只支持 RAR 在Windows系统中的文件压缩工具winrar功能强大,虽然我们都习惯于用gui的...第二步是用s命令把这个压缩文件转化为自解压文件: winrar s asdf.tr.rar 转化后,生成了自解压文件:asdf.tr.exe
例如,输入`unzip filename.zip`即可将ZIP文件解压到当前目录。 在编程领域,开发人员经常需要处理文件压缩和解压,这时就会用到像"ZipUtil"这样的库。例如,在Java中,Apache Commons Compress库提供了处理多种...
这种组合使得DEFLATE在压缩比和解压速度之间找到了一个良好的平衡。 在使用gzip压缩软件时,用户通常通过命令行界面操作。在Unix或Linux环境中,可以使用`gzip`命令对单个文件进行压缩,例如`gzip filename`会将...
修复完成后,工具会生成一个新的压缩文件,用户可以尝试解压以确认是否成功。 “真正方便的WinRAR压缩文件超级修复工具.txt”文件很可能是该工具的使用指南或说明文档,包含了详细的步骤、注意事项以及可能遇到的...
然而,由于各种原因,如文件损坏、病毒感染或不完整的下载,压缩文件可能会出现问题,无法正常打开或解压。在这种情况下,压缩文件修复软件就显得尤为重要。本文将详细介绍这类修复工具的功能、工作原理以及如何使用...
文件压缩的基本思想是找出文件中的冗余数据并进行编码优化。通过查找和替换重复模式,减少存储所需的数据量。常见的压缩算法有霍夫曼编码、LZ77(Lempel-Ziv)算法、DEFLATE(结合了LZ77和霍夫曼编码)等。例如,...
2. **关键词匹配**:用户输入搜索关键字后,工具会对比索引中的文件内容,找出与关键词匹配的文件。 3. **结果展示**:搜索结果会列出所有匹配的文件及其所在压缩包,用户可以选择直接预览或者解压到指定位置。 4....
### 哈弗曼树的文件压缩和解压实验报告 #### 1. 哈弗曼树简介 哈弗曼树(Huffman Tree),又称最优二叉树,是一种带权路径长度最短的二叉树,即在二叉树中任何一个叶子节点的权值均大于其父节点。哈弗曼树广泛应用...
文件压缩的基本思想是找出文件中重复的数据模式并用更短的编码表示。这通常通过哈夫曼编码、算术编码、LZ77(Lempel-Ziv)或其变体等算法实现。在高压缩比的情况下,更复杂的算法如BZip2、PPMd和7-Zip的lzma可能会被...
例如,`zlib`库就是一个广泛使用的开源压缩库,提供了压缩和解压缩功能,其DLL文件可以在不同程序中调用,实现数据的压缩和解压。 在编程实现文件压缩和解压缩时,通常会使用现成的库或API,例如前面提到的`zlib`,...
在这个场景中,我们将讨论如何使用Python来实现PDF图片文件的压缩。首先,我们需要理解PDF文件的结构,它可能包含文本、图像和其他元素。对于含有大量图片的PDF文件,压缩图片可以显著减小文件大小,便于存储和传输...
在现代Web开发中,为了提高网站的加载速度和性能,对JavaScript(js)和CSS(css)文件进行压缩是至关重要的一步。"js&css压缩工具"是一个专门针对这两种文件类型的压缩工具,它能有效地减小文件大小,从而降低网络...
对于"读取ZIP目录",我们需要解析ZIP文件的头部信息,找出文件列表。ZIP文件的目录信息存储在一个特定的区段,包含了所有文件的名字、大小、压缩前后大小、时间戳等信息。易语言程序可以通过读取这个区段并解析其...