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
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
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 <
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();
}
}
}
}