Atitit java zip compress use apache tool jar
压缩的问题
static void | zip(java.lang.String zipFileName, java.lang.String absolutPath_waittoProcessFileOrDir) |
只应该这俩个参数。。网上的在多重目录下有bug,花了好长时间修复bug
应该啊abs path的目录作为一个文件来看待所以,zip root diras source dir name
package com.attilax.compress;
import static org.junit.Assert.*;
import org.junit.Test;
public class ZipUtilTest {
@Test
public void testZip() {
//ZipUtil.zip("c:\\d\\placeholderIndex_v7_frm_java.zip", "", "C:\\d\\placeholderIndex v3 s524");
ZipUtil.zip("c:\\d\\placeholderIndex_v7_frm_java.zip", "C:\\d\\war");
System.out.println("-f");
}
}
private static void | close_isNos(java.io.OutputStream os, java.io.InputStream is, org.apache.tools.zip.ZipFile zipFile) |
private static void | createZipNode(org.apache.tools.zip.ZipOutputStream zos, java.lang.String relativePath) 创建目录 |
private static java.lang.String | getnewRelativePathByDirjoin(java.lang.String relativeRootPath_inzip, java.lang.String name) |
static void | main(java.lang.String[] args) |
static java.lang.String | unzip_filelist(java.lang.String zipFilePath) 解压缩zip包 |
static java.util.List<java.lang.String> | unzip_filelistV2(java.lang.String zipFilePath) |
static void | unzip_throwRE(java.lang.String zipFilePath, java.lang.String targetPath) |
static void | unzip(java.lang.String zipFilePath, java.lang.String targetPath) 解压缩zip包 |
static void | unzipV2(java.lang.String zipFilePath, java.lang.String targetPath) 解压缩zip包 |
static void | unzipV3(java.lang.String zipFilePath, java.lang.String targetPath, com.google.common.base.Function runnableImp) 解压缩zip包 |
static void | unzipZipoisit(java.lang.String zipFilePath) |
static void | unzipZipoisit(java.lang.String zipFilePath, com.google.common.base.Function runnableImp) upzip to cur dir |
private static void | upzipSingle(org.apache.tools.zip.ZipFile zipFile, java.lang.String directoryPath, org.apache.tools.zip.ZipEntry zipEntry) |
private static void | upzipSingleOutput(org.apache.tools.zip.ZipFile zipFile, org.apache.tools.zip.ZipEntry zipEntry, java.io.File targetFile) |
static void | zip(java.lang.String zipFileName, java.lang.String absolutPath_waittoProcessFileOrDir) |
static void | zip(java.lang.String zipFileName, java.lang.String relativePath_inzip, java.lang.String absolutPath_waittoProcessFileOrDir) 压缩 |
private static void | zip(org.apache.tools.zip.ZipOutputStream zos, java.lang.String relativeRootPath_inzip, java.lang.String absolutPath_waittoProcessFileOrDir, java.lang.String Startdir) 压缩 |
private static void | zipFile(org.apache.tools.zip.ZipOutputStream zos, java.io.File file, java.lang.String relativePath_inzip, java.lang.String startdir) 压缩文件 |
public class ZipUtil {
protected static Logger logger = LoggerFactory.getLogger(ZipUtil.class);
public static void zip(String zipFileName, String absolutPath_waittoProcessFileOrDir) {
File file = new File(absolutPath_waittoProcessFileOrDir);
String Startdir = file.getParent();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new FileOutputStream(zipFileName));
} catch (FileNotFoundException e1) {
ExUtil.throwExV2(e1);
}
try {
zip(zos, "", absolutPath_waittoProcessFileOrDir, Startdir);
} catch (Exception ex) {
ExUtil.throwExV2(ex);
} finally {
if (null != zos) {
try {
zos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/** */
/**
* 压缩
*
* @param zipFileName
* 压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名
* @param relativePath_inzip
* 相对路径,默认为空
* @param absolutPath_waittoProcessFileOrDir
* 文件或目录的绝对路径
* @throws FileNotFoundException
* @throws IOException
* @author yayagepei
* @date 2008-8-26
*/
public static void zip(String zipFileName, String relativePath_inzip, String absolutPath_waittoProcessFileOrDir) {
File file = new File(absolutPath_waittoProcessFileOrDir);
String Startdir = file.getParent();
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new FileOutputStream(zipFileName));
} catch (FileNotFoundException e1) {
ExUtil.throwExV2(e1);
}
try {
zip(zos, relativePath_inzip, absolutPath_waittoProcessFileOrDir, Startdir);
} catch (Exception ex) {
ExUtil.throwExV2(ex);
} finally {
if (null != zos) {
try {
zos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/** */
/**
* 压缩
*
* @param zos
* 压缩输出流
* @param relativeRootPath_inzip
* 相对路径
* @param absolutPath_waittoProcessFileOrDir
* 文件或文件夹绝对路径
* @throws IOException
* @author yayagepei
* @date 2008-8-26
*/
// private static void zip(ZipOutputStream zos, String
// relativeRootPath_inzip, String absolutPath_waittoProcessFileOrDir) {
// File file = new File(absolutPath_waittoProcessFileOrDir);
// String Startdir=file.getParent();
// zip(zos, relativeRootPath_inzip,absolutPath_waittoProcessFileOrDir,
// Startdir);
//
// }
private static void zip(ZipOutputStream zos, String relativeRootPath_inzip,
String absolutPath_waittoProcessFileOrDir, String Startdir) {
File file = new File(absolutPath_waittoProcessFileOrDir);
if (file.isDirectory()) { // lev1
// createZipNode(zos, file.getName()+"");
File[] files = file.listFiles();
// relativeRootPath_inzip= getnewRelativePathByDirjoin(
// relativeRootPath_inzip , file.getName());
for (int i = 0; i < files.length; i++) {
File tempFile = files[i];
if (tempFile.isDirectory()) { // lev2
zip(zos, relativeRootPath_inzip, tempFile.getPath(), Startdir);
} else { // file mode
zipFile(zos, tempFile, relativeRootPath_inzip, Startdir);
}
}
} else {
zipFile(zos, file, relativeRootPath_inzip, Startdir);
}
}
private static String getnewRelativePathByDirjoin(String relativeRootPath_inzip, String name) {
if (relativeRootPath_inzip == null)
return name;
if (relativeRootPath_inzip.trim().length() == 0)
return name;
else
return relativeRootPath_inzip + File.separator + name;
}
/** */
/**
* 压缩文件
*
* @param zos
* 压缩输出流
* @param file
* 文件对象
* @param relativePath_inzip
* 相对路径
* @throws IOException
* @author yayagepei
* @param startdir
* @date 2008-8-26
*/
private static void zipFile(ZipOutputStream zos, File file, String relativePath_inzip, String startdir) {
logger.info(file.getAbsolutePath());
String rltpath = file.getAbsolutePath().substring(startdir.length() + 1);
String ZipEntrynamej = getnewRelativePathByDirjoin(relativePath_inzip, rltpath);
ZipEntry entry = new ZipEntry(ZipEntrynamej);
try {
zos.putNextEntry(entry);
} catch (IOException e) {
ExUtil.throwExV2(e);
}
InputStream is = null;
try {
is = new FileInputStream(file);
int BUFFERSIZE = 2 << 10;
int length = 0;
byte[] buffer = new byte[BUFFERSIZE];
while ((length = is.read(buffer, 0, BUFFERSIZE)) >= 0) {
zos.write(buffer, 0, length);
}
zos.flush();
zos.closeEntry();
} catch (IOException ex) {
ExUtil.throwExV2(ex);
} finally {
if (null != is) {
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}