Java压缩文件/目录成ZIP包最新技巧

使用java自带的类java.util.zip进行文件/目录的压缩的话,有一点不足,不支持中文的名件/目录命名,如果有中文名,那么打包就会失败。本人经过一段时间的摸索和实践,发现在一般的Ant.jar类库中也有zip类,import org.apache.tools.zip.*,能够解决不支持中文文件目录的问题,同时,Ant的获得途径也比较多,一般的应用服务器中有这个包,实在不行去下载个tomcat5.X,里面也有ant.jar,本人经过测试,可以使用。

例子如下:

import java.io.File;
import org.apache.tools.zip.ZipOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import dianda.cwmanage.*;
import dianda.com.util.Format;
public class CompressBook {
 public CompressBook() {
}
public void zip(String inputFileName) throws Exception {
 String zipFileName="c:\\test.zip";//打包后文件名字
 System.out.println(zipFileName);
 zip(zipFileName, new File(inputFileName));
}
private 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();
}
private void zip(ZipOutputStream out, File f, String base) throws Exception {
 if (f.isDirectory()) {
  File[] fl = f.listFiles();
  out.putNextEntry(new org.apache.tools.zip.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 org.apache.tools.zip.ZipEntry(base));
  FileInputStream in = new FileInputStream(f);
  int b;
  System.out.println(base);
  while ( (b = in.read()) != -1) {
   out.write(b);
  }
  in.close();
 }
}
}

唯一遗憾,美中不足的是,无论,java.util.zip或者org.apache.tools.zip都不能解压rar工具打成的rar包,搜了半天也找不到采用java解压rar工具打成的包,盼望哪位高人能够提供解压rar工具打成的包,和大家分享一下!

时间: 2024-11-02 05:41:07

Java压缩文件/目录成ZIP包最新技巧的相关文章

java多个文件压缩成zip包,并删掉源文件

问题描述 java多个文件压缩成zip包,并删掉源文件 一个文件夹下有txt文件,csv文件,zip文件,怎么将该文件夹下的所有csv文件压缩成zip包,并删掉原始的csv文件,大神能不能给个例子看一下,谢谢了. 解决方案 java压缩成zip 解决方案二: 这么专业的问题,路过,同求 解决方案三: public static void fileToZip(String sourceFilePath){ File sourceFile = new File(sourceFilePath); Fi

sae-如何将java代码文件打包成.war格式的包

问题描述 如何将java代码文件打包成.war格式的包 我在sina?app?engine上创建了一个应用,现在要把代码上传上去,上传格式只能是war的格式上传,如何将文件压缩为war格式呢?另外怎么将数据库一起弄到上面? 解决方案 打开项目工程 用eclipse导出 war就可以啦 解决方案二: 如何将Web应用打包成.war文件?如何将Web应用打包成.war文件?---------------------- 解决方案三: 1.使用winrar压缩软件,直接将应用文件目录(包含该目录下的所有

新手求教,关于java压缩文件的问题

问题描述 新手求教,关于java压缩文件的问题 import java.io.*;import java.util.zip.*;public class Myzip { private void zip(ZipOutputStream outFile fString base) throws Exception{ if(f.isDirectory()){ File f1[]=f.listFiles(); out.putNextEntry(new ZipEntry(base+""/&qu

java压缩文件和下载图片示例_java

本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>项目的主页</title> </head> <body> <h2>主页

java压缩文件

java的GZIP接口非常简单,所以如果只有单个数据流需要压缩(而不是一系列不同的数据),那么它就可能是最适当选择.下面是对单个文件进行压缩的例子:   //: GZIPcompress.java // Uses Java 1.1 GZIP compression to compress // a file whose name is passed on the command // line. import java.io.*; import java.util.zip.*; public c

chrome插件-将.crx文件改成.zip文件后导致插件无法正常工作,这是什么原因?

问题描述 将.crx文件改成.zip文件后导致插件无法正常工作,这是什么原因? 最近在学习chrom插件,于是下载了一个chrome插件源码,是.crx文件,直接将它拖入chrome://extensions/安装后功能正常,为了研究它的源码,我将.crx文件改成.zip文件解压,这次我通过路径加载已解压的文件,插件却无法正常工作,这是什么原因?前端小白,求大神指点.

关于把文件夹打包成zip包

问题描述 想做一个把文件夹,包括文件夹内的子文件打成zip包的功能,在网上找了个例子privatevoidbutton2_Click(objectsender,EventArgse){ZipFile(@"d:file",@"d:filea.zip");}publicvoidZipFile(stringstrFile,stringstrZip){if(strFile[strFile.Length-1]!=Path.DirectorySeparatorChar)strF

Java压缩文件ZIP实例代码_java

提示:java.util.zipoutputstream         java API压缩为zip文件 代码: 复制代码 代码如下: package com.gaoqi.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.z

spring mvc java 把多文件打包成zip,并下载

再来一篇 /** * 压缩并导出文件 * @param zipPath 压缩文件临时路径 路径最后不要有 / * @param zipName 压缩为文件名 **.zip * @param createFilesPath 需要压缩的文件列表 * @param request * @param response * @return * @throws IOException */ public boolean downloadZip(String zipPath,String zipName,Li