/**
TestZip.java
coding by Serol Luo.
rollingpig@163.com
2003/07/03
http://www.chinaunix.net/forum/viewforum.php?f=26
转载请保留此信息
*/
import java.util.*;
import java.util.zip.*;
import java.io.*;
class TestZip
{
public void zip(String zipFileName,String inputFile)throws Exception{
zip(zipFileName,new File(inputFile));
}
public void zip(String zipFileName,File inputFile)throws Exception{
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out,inputFile,"");
System.out.println("zip done");
out.close();
}
public void unzip(String zipFileName,String outputDirectory)throws Exception{
ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName));
ZipEntry z;
while ((z=in.getNextEntry() )!= null)
{
System.out.println("unziping "+z.getName());
if (z.isDirectory())
{
String name=z.getName();
name=name.substring(0,name.length()-1);
File f=new File(outputDirectory+File.separator+name);
f.mkdir();
System.out.println("mkdir "+outputDirectory+File.separator+name);
}
else{
File f=new File(outputDirectory+File.separator+z.getName());
f.createNewFile();
FileOutputStream out=new FileOutputStream(f);
int b;
while ((b=in.read()) != -1)
out.write(b);
out.close();
}
}
in.close();
}
public void zip(ZipOutputStream out,File f,String base)throws Exception{
System.out.println("Zipping "+f.getName());
if (f.isDirectory())
{
File[] fl=f.listFiles();
out.putNextEntry(new ZipEntry(base+"/"));
base=base.length()==0?"":base+"/";
for (int i=0;i<fl.length ;i++ )
{
zip(out,fl[i],base+fl[i].getName());
}
}
else
{
out.putNextEntry(new ZipEntry(base));
FileInputStream in=new FileInputStream(f);
int b;
while ((b=in.read()) != -1)
out.write(b);
in.close();
}
}
public static void main(String[] args)
{
try{
TestZip t=new TestZip();
t.zip("c:\\test.zip","c:\\test");
t.unzip("c:\\test.zip","c:\\test2");
}
catch(Exception e){e.printStackTrace(System.out);}
}
}
分享到:
相关推荐
使用 `ZipOutputStream` 类可以创建一个 ZIP 格式的文件。下面是一个简单的示例: ```java import java.io.*; import java.util.zip.*; public class ZipExample { public static void main(String[] args) ...
在Java编程语言中,`java.util.zip` 是一个非常重要的包,它提供了处理各种压缩格式(如ZIP和GZ)的工具。在这个场景中,我们将深入探讨如何使用这个包来解压缩和压缩ZIP格式的文件。`java.util.zip` 包包含几个关键...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
1. **ZipOutputStream** 和 **ZipInputStream**: 这是两个核心类,分别用于创建和读取ZIP文件。为了支持中文,可能需要在创建`ZipOutputStream`时设置正确的字符编码,或者在解析`ZipInputStream`时进行编码转换。 ...
在Java编程语言中,`java.util.InputMismatchException`是一个常见的运行时异常,它通常发生在尝试从数据源(如控制台、文件或数据库)读取数据时,遇到的数据类型与预期的不匹配。在这个特定的场景中,问题出在主线...
在本文中,我们将深入探讨`java.util.zip`包中的关键组件以及如何使用它们创建一个类似`Zipper`的类。 首先,`java.util.zip`包中最核心的类有`ZipOutputStream`和`ZipInputStream`。`ZipOutputStream`是`...
在Java中,`ZipOutputStream`和`ZipInputStream`是处理ZIP文件的核心类。`ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压缩ZIP文件。然而,由于历史原因,这两个类在处理非ASCII字符(如中文...
这个异常是由Java的ZIP文件处理类抛出的,当尝试访问或读取ZIP文件时,如果发现文件头部的签名不正确,或者文件内容损坏,就会抛出此异常。在Tomcat中,这通常发生在Tomcat尝试展开WAR文件或加载包含的JAR文件时。 ...
这个包中的核心类包括`ZipOutputStream`和`ZipInputStream`,它们分别用于创建ZIP文件和读取解压缩ZIP文件。下面我们将详细探讨如何使用这些类来实现ZIP文件的压缩和解压功能。 **一、压缩ZIP文件** 1. **使用...
`ZipInputStream`和`ZipOutputStream`是Java的`java.util.zip`包中的类,分别用于读取和写入ZIP文件。`ZipInputStream`可以从输入流中读取ZIP格式的数据,而`ZipOutputStream`则可以将数据写入ZIP格式的输出流。 ...
`ZipInputStream`用于读取ZIP文件的输入流,而`ZipEntry`代表ZIP文件中的每一个条目(即文件或目录)。 1. **打开ZIP文件**: 首先,你需要创建一个`FileInputStream`来打开ZIP文件。例如,如果你有一个名为`...
该包包含了多个类,如`ZipEntry`、`ZipOutputStream`等,它们可以用于创建和管理ZIP文件。通常情况下,文件压缩是在客户端或服务器端执行的任务,用于减少文件大小、优化存储空间或者便于在网络上传输。 #### 代码...
在这个示例中,我们首先创建一个`FileInputStream`来读取ZIP文件,然后用它创建`ZipInputStream`。通过调用`getNextEntry()`,我们可以遍历ZIP文件中的每个条目。如果条目是目录,我们只需打印其名称;如果是文件,...
创建时,通常会先创建一个`FileOutputStream`对象,指定输出的ZIP文件路径,然后用这个`FileOutputStream`实例初始化`ZipOutputStream`。 ```java FileOutputStream fos = new FileOutputStream("output.zip"); ...
在读取ZIP文件时,我们首先需要打开ZIP文件并创建一个ZIP文件对象。然后,通过迭代这个对象,我们可以访问每个条目(即压缩的文件或目录),获取其文件名和内容。关键在于正确处理文件名的编码。在某些情况下,...
- `java.util.zip`包中的`ZipInputStream`类用于读取ZIP输入流,并逐个处理ZIP条目。 - 创建`ZipInputStream`,并遍历其中的每一个`ZipEntry`。 - 对于每个条目,检查其是否为文件或目录。如果是文件,创建目标...
我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示如何实现文件的解压缩功能。 首先,`java.util.zip`包提供了几个关键类,用于处理各种压缩格式,如`...
在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...
2. 使用`ZipEntry`类创建一个`ZipEntry`对象,表示你想要添加到`.zip`文件的每个文件。 3. 将`ZipEntry`对象写入`ZipOutputStream`,然后用`FileInputStream`读取并写入文件的实际内容。 ```java import java.io.*;...
以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...