由于jdk自带的zip类对中文文件名的支持不好,所以使用了ant的工具类。
网上的大部分都是这样做的,不过不知道为什么,也许是ant版本问题,我用他们的代码依然是中文文件名乱码,经检查发现,需要指定一些输出流的编码方式就可以了。
out.setEncoding("GBK"); 完整的源代码如下
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import org.apache.tools.zip.ZipEntry;
- import org.apache.tools.zip.ZipOutputStream;
- public class DirectoryZip {
- public static void jar(String inputFileName, String outputFileName) throws Exception {
- ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFileName));
- out.setEncoding("GBK");
- File f = new File(inputFileName);
- jar(out, f, "");
- out.close();
- }
- private static void jar(ZipOutputStream out, File f, String base) throws Exception {
- if (f.isDirectory()) {
- File[] fl = f.listFiles();
- base = base.length() == 0 ? "" : base + "/";
- out.putNextEntry(new ZipEntry(base));
- for (int i = 0; i < fl.length; i++) {
- jar(out, fl[i], base + fl[i].getName());
- }
- } else {
- out.putNextEntry(new ZipEntry(base));
- FileInputStream in = new FileInputStream(f);
- byte[] buffer = new byte[1024];
- int n = in.read(buffer);
- while (n != -1) {
- out.write(buffer, 0, n);
- n = in.read(buffer);
- }
- in.close();
- }
- }
- public static void main(String[] args) {
- try {
- jar("D:\\temp", "d://test.zip");
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- }
- }
分享到:
相关推荐
1. 可以将任意一个目录压缩成一个zip文件,包含密码 2. 可以将任意一个zip文件,加压到一个目录中,该目录位于当前执行文件所在目录的Unzip目录中,目录结构不变 3. 可以加压出任意一个zip文件中的文件到当前执行...
在描述部分,“开发工具---这里面包含36拉链,768和微缩2003等三个文件,压缩成一个zip”重复了标题的信息,再次强调这个压缩包内有三个主要的文件,分别是36个独立的ZIP文件以及名为“768”和“微缩2003”的两个...
5. **创建ZIP包**:最后,点击“压缩”或“创建ZIP文件”按钮,软件会处理所选文件并将它们打包成一个ZIP文件。 6. **分享与解压**:完成后,你可以通过电子邮件、云存储服务或物理媒介将ZIP文件发送给他人。接收者...
- `ZipFile.CreateFromDirectory(string sourceDirectoryName, string destinationArchiveFileName)`: 这个方法用于将指定目录下的所有文件和子目录压缩成一个ZIP文件。 - `ZipFile.AddFile(string fileName, ...
zip 命令是 Linux 系统中常用的压缩文件命令,可以将一个或多个文件压缩成一个 zip 文件,以便于文件传输和存储。zip 命令提供了多种选项来控制压缩过程,用户可以根据需要选择合适的选项来实现不同的压缩效果。
- 将多个Excel文件压缩成一个zip文件可以大大减小存储空间需求,便于传输和分享。 - 使用zip压缩格式,能有效降低文件体积,因为zip支持有损和无损压缩算法,可以根据需要选择合适的压缩级别。 - 在处理大量文件...
在PHP开发中,经常需要对文件进行压缩操作,比如将一个或多个文件压缩成一个ZIP文件以供下载或其他处理。本篇将详细介绍如何利用PHP内置的`ZipArchive`类来实现这一功能。 #### 二、`ZipArchive`类简介 `Zip...
在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...
ZIP文件是一种广泛使用的文件归档格式,它可以将多个文件和目录组合成一个单一的可压缩文件,方便存储和传输。在Java中,我们可以使用`java.util.zip`包中的类来读取和解压ZIP文件。 首先,我们需要了解几个关键的...
- 首先,需要导入`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`类,它们分别用于创建ZIP输出流和表示ZIP包内的每个条目(文件或目录)。 - 使用`File`类遍历指定的目录及其子目录,获取所有需要打包的文件...
首先,SHP文件的结构是二进制的,由多个部分组成,包括文件头、形状记录头、形状数据和可选的属性数据。文件头包含了文件的基本信息,如文件长度、形状类型等;形状记录头描述了每个形状记录的大小和位置;形状数据...
这行代码会将指定的sourceDirectory目录及其所有内容压缩成一个ZIP文件。 2. **添加文件到ZIP** 如果需要压缩单个文件,可以使用ZipFile.ExtractToDirectory方法。不过,更灵活的方式是直接使用ZipArchive类。首先...
压缩包子文件的文件名称列表只有一个,即"一个可以把js源代码压缩成一个ASCII字符画的源代码的工具",这可能包含了工具的源代码、示例、使用说明等相关文件。用户在使用这个工具时,需要阅读相关文档,了解如何操作...
在IT行业中,有时我们需要将多个文件捆绑到一个可执行文件(EXE)中,以便用户可以轻松地分发和运行整个软件包。Visual C++(VC++)提供了一种方法来实现这一目标,通过创建一个自解压程序,使得用户双击EXE文件时,...
4. 创建ZIP容器:最后,所有压缩后的数据块和元数据被组合成一个ZIP容器,并保存为ZIP文件。 三、ZIP解压过程 1. 读取ZIP头:解压程序首先读取ZIP文件的头信息,了解文件的结构。 2. 分析ZIP目录:解析ZIP文件中的...
然后,将这个合并后的PDF文件进行压缩,打包成ZIP文件。ZIP是一种常见的文件压缩格式,能够减小文件体积,便于存储和传输。 描述中提到的"绿色免安装"意味着我们使用的工具无需正式的安装过程,通常这样的软件是...
我们先来看看如何将多个文件打包成一个ZIP文件。 1. **打包文件到ZIP** - 首先,创建一个`ZipOutputStream`对象,它需要一个`FileOutputStream`作为参数,指定输出的ZIP文件路径。 - 然后,对于每个要打包的文件...
在日常工作中,经常需要将一个文件夹内的所有文件压缩成一个ZIP文件,以便于传输或存储。Python作为一种强大的编程语言,提供了多种方法来实现这一功能。下面详细介绍如何使用Python内置的`zipfile`模块来压缩指定...
通过向这个流写入数据,我们可以将多个文件打包成一个Zip文件。 2. **创建ZipOutputStream对象**: 首先,我们需要创建一个`FileOutputStream`对象,然后使用它来初始化`ZipOutputStream`。例如: ```java ...
用户可以上传多个文件,程序会将它们打包成一个ZIP文件。 4. **错误处理**:在处理ZIP文件时,可能出现各种错误,如文件不存在、权限问题等。因此,良好的错误处理机制至关重要。使用`getStatusString()`方法获取...