//使用org.apache.tools.zip包
public void ExportRARTest(String tablename[],HttpServletRequest request,String dir,String fileFolder,String isback) throws IOException{
byte[] buf = new byte[1024];
org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new FileOutputStream(dir));
String pathString="";
if ("yes".equals(isback)) {
pathString=fileString+fileFolder;
}
else {
pathString=request.getRealPath("/")+"updbload";
}
try {
for(int i=0;i<tablename.length;i++) {
tablename[i]=pathString+"/"+tablename[i];
File file=new File(tablename[i]);
if (file.exists()) {
FileInputStream fis = new FileInputStream(file);
out.putNextEntry(new org.apache.tools.zip.ZipEntry(file.getName()));
int len;
//读入需要下载的文件的内容,打包到zip文件
while((len = fis.read(buf))>0) {
out.write(buf,0,len);
}
out.closeEntry();
fis.close();
file.delete();
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
out.close();
}
}
注意黑体<Strong></Strong>部分是解决中文乱码的关键!!!!!!
分享到:
相关推荐
本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 首先,我们要明白乱码问题的根源。在文件的压缩和解压缩过程中,文件名通常被编码为字节序列,这个序列取决于原始文件名...
这是因为ZIP文件格式本身是支持Unicode编码的,但是Java的标准库在处理这些文件时默认使用了ISO-8859-1编码,这可能导致中文文件名显示为乱码或无法正确解压。 标题"根据java.util.zip源码修改zip支持中文"指的是...
* @param zipFileName 压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名 * @param relativePath 相对路径,默认为空 * @param directory 文件或目录的绝对路径 * void */ ...
在Java中,`java.util.zip`包提供了对ZIP文件的基本操作,但默认使用的是平台默认的字符集,这可能在跨平台操作时引发乱码问题。 为了解决这个中文乱码问题,我们需要在创建ZipEntry时指定合适的字符集,通常是UTF-...
本文将深入探讨如何使用ZipOutputStream进行文件压缩,并解决可能出现的乱码问题。 首先,我们来看`ZipOutputStream`的基本用法。这个类继承自`FilterOutputStream`,提供了创建ZIP文件的功能。以下是一个简单的...
项目中碰到问题.jdk zipEntry 压缩中文文件名乱码 上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项. 第二种 就是拿来主义,因为 开源项目 Ant 里已经有...
对于ZIP压缩,可以使用`java.util.zip`包中的`ZipOutputStream`。对于RAR,使用JUnrar库,可以创建`RarArchiveOutputStream`来进行压缩。 ```java import net.lingala.zip4j.core.ZipFile; import ...
在读取ZIP文件时,我们首先需要打开ZIP文件并创建一个ZIP文件对象。然后,通过迭代这个对象,我们可以访问每个条目(即压缩的文件或目录),获取其文件名和内容。关键在于正确处理文件名的编码。在某些情况下,...
`ZipUtil`是一个专门用于文件压缩的工具类,它解决了在处理包含中文字符的文件或目录时可能出现的乱码问题。`ZipEntry`是Java标准库`java.util.zip`包中的核心类,用于表示ZIP文件中的一个条目,它可以是文件或目录...
在Java编程中,处理压缩和解压缩ZIP文件是一项常见的任务,尤其当文件中包含中文字符时,可能会遇到中文乱码的问题。这是因为Java的标准库在处理非ASCII编码时可能存在不足。本篇文章将详细介绍如何使用Java标准库...
总结来说,Java中使用Apache Commons Compress库进行ZIP文件操作,不仅提供了更丰富的功能,如设置字符编码,还能有效处理中文等非ASCII字符,保证了在处理多语言环境下的文件时不会出现乱码问题。通过上述方法,...
因此,如果ZIP文件中的文件名包含中文,使用`java.util.zip`进行操作时,中文文件名可能会出现乱码。为了解决这个问题,开发者需要手动设置正确的字符编码,通常是UTF-8,来确保中文文件名能够正确处理。 Ant是一个...
不过,最好还是确保在创建ZIP文件时使用统一的编码,以减少在不同系统之间交换文件时可能出现的兼容性问题。在实际开发中,可以编写一个通用的解压函数,封装上述逻辑,以方便在项目中重用。 在本例中,虽然没有...
用java.util.zipoutputstream压缩会出现中文的文件名乱码的情况,且无法设置字符集,这个版本用org.apache.tools.zip.ZipOutputStream压缩,可以自定义字符集,解决中文的文件名乱码问题。
在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...
File outputFile = new File("压缩后文件路径"); try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(inputFile)); GZIPOutputStream gzipOut = new GZIPOutputStream(new ...
本篇文章将详细探讨如何使用Java内置的类库来实现ZIP文件的压缩和解压缩,以及解决中文文件名出现乱码的问题。 首先,我们要了解Java中处理ZIP文件的核心类:`java.util.zip.ZipOutputStream` 和 `java.util.zip....
因此,如果源文件包含中文字符且这些字符不是默认字符集的一部分,压缩后解压时就可能出现乱码。 解决这个问题的一种方法是自定义`DeflaterOutputStream`和`InflaterInputStream`,覆盖它们的`write`方法,确保使用...
2. 创建一个`ZipOutputStream`,并将其关联到一个输出流,例如`FileOutputStream`,这样我们可以通过这个`ZipOutputStream`将压缩后的数据写入一个新的ZIP文件。 3. 使用`ZipOutputStream`的`putNextEntry`方法来...
本文将详细介绍如何使用`java.util.zip`包中的类来压缩文件及目录,并解决其中的一个常见问题——中文文件名或目录名的支持问题。 #### 一、Java自带压缩工具简介 Java标准库提供了`java.util.zip`包来处理文件的...