`
- 浏览:
118861 次
- 性别:
- 来自:
广州
-
转自:http://wlh.iteye.com/
-
import java.io.File;
- import java.io.FileInputStream;
- 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 org.apache.tools.zip.ZipOutputStream;
-
- public class CompressFile {
-
private static CompressFile instance = new CompressFile();
-
-
private CompressFile() {
-
}
-
-
public static CompressFile getInstance() {
-
return instance;
-
}
-
-
public synchronized void zip(String inputFilename, String zipFilename)
-
throws IOException {
-
zip(new File(inputFilename), zipFilename);
-
}
-
-
public synchronized void zip(File inputFile, String zipFilename) throws IOException {
-
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
-
zipFilename));
-
-
try {
-
zip(inputFile, out, "");
-
} catch (IOException e) {
-
throw e;
-
} finally {
-
out.close();
-
}
-
}
-
-
private synchronized void zip(File inputFile, ZipOutputStream out, String base)
-
throws IOException {
-
if (inputFile.isDirectory()) {
-
File[] inputFiles = inputFile.listFiles();
-
out.putNextEntry(new ZipEntry(base + "/"));
-
base = base.length() == 0 ? "" : base + "/";
-
for (int i = 0; i < inputFiles.length; i++) {
-
zip(inputFiles[i], out, base + inputFiles[i].getName());
-
}
-
-
} else {
-
if (base.length() > 0) {
-
out.putNextEntry(new ZipEntry(base));
-
} else {
-
out.putNextEntry(new ZipEntry(inputFile.getName()));
-
}
-
-
FileInputStream in = new FileInputStream(inputFile);
-
try {
-
int c;
-
byte[] by = new byte[BUFFEREDSIZE];
-
while ((c = in.read(by)) != -1) {
-
out.write(by, 0, c);
-
}
-
} catch (IOException e) {
-
throw e;
-
} finally {
-
in.close();
-
}
-
}
-
}
-
-
public synchronized void unzip(String zipFilename, String outputDirectory)
-
throws IOException {
-
File outFile = new File(outputDirectory);
-
if (!outFile.exists()) {
-
outFile.mkdirs();
-
}
-
-
ZipFile zipFile = new ZipFile(zipFilename);
-
Enumeration en = zipFile.getEntries();
-
ZipEntry zipEntry = null;
-
while (en.hasMoreElements()) {
-
zipEntry = (ZipEntry) en.nextElement();
-
if (zipEntry.isDirectory()) {
-
-
String dirName = zipEntry.getName();
-
dirName = dirName.substring(0, dirName.length() - 1);
-
-
File f = new File(outFile.getPath() + File.separator + dirName);
-
f.mkdirs();
-
-
} else {
-
-
File f = new File(outFile.getPath() + File.separator
-
+ zipEntry.getName());
-
f.createNewFile();
-
InputStream in = zipFile.getInputStream(zipEntry);
-
FileOutputStream out = new FileOutputStream(f);
-
try {
-
int c;
-
byte[] by = new byte[BUFFEREDSIZE];
-
while ((c = in.read(by)) != -1) {
-
out.write(by, 0, c);
-
}
-
-
} catch (IOException e) {
-
throw e;
-
} finally {
-
out.close();
-
in.close();
-
}
-
}
-
}
-
}
-
-
private static final int BUFFEREDSIZE = 1024;
-
-
public static void main(String[] args) {
-
CompressFile bean = new CompressFile();
-
try {
-
bean.zip("d:/temp", "d:/test.zip");
-
-
bean.unzip("d:/test.zip", "d:/out/temp");
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...
在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...
在Java编程语言中,解压缩ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包和部署等场景下。本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种...
解压ZIP文件的过程相对简单,主要使用`ZipInputStream`和`FileOutputStream`。以下是解压的基本步骤: 1. **创建`ZipInputStream`**:使用`FileInputStream`打开ZIP文件,然后传递给`ZipInputStream`。 2. **读取`...
- **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...
1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种压缩和解压缩的类,如`ZipOutputStream`、`ZipInputStream`、`GZIPOutputStream`和`GZIPInputStream`,用于处理ZIP和GZIP格式的文件。...
zipEntry.setComment("压缩文件"); // 可以添加注释,同样需要指定字符集 zos.putNextEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer...
本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...
在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...
java压缩解压ZIP
这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...
在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...
以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...
在Java编程环境中,处理压缩和解压缩文件是常见的任务,主要涉及到两个标准库中的类:`java.util.zip`和第三方库如Apache Commons Compress。本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关...
在提供的代码片段中,`unzipFile`方法展示了如何解压缩一个`.zip`文件。它首先创建一个`ZipFile`对象,然后遍历其中的所有`ZipEntry`,如果是目录,则创建对应的目录结构;如果是文件,则通过`getInputStream`获取流...