Atitit java zip compress use apache tool jar
Atitit java zip compress use apache tool jar
?
壓縮的問(wèn)題
static void
zip(java.lang.String?zipFileName,
?java.lang.String?absolutPath_waittoProcessFileOrDir)?
?
只應(yīng)該這倆個(gè)參數(shù)。。網(wǎng)上的在多重目錄下有bug,花了好長(zhǎng)時(shí)間修復(fù)bug
應(yīng)該啊abs path的目錄作為一個(gè)文件來(lái)看待所以,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)
創(chuàng)建目錄
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
?* ???????????壓縮產(chǎn)生的zip包文件名--帶路徑,如果為null或空則默認(rèn)按文件名生產(chǎn)壓縮文件名
?* @param?relativePath_inzip
?* ???????????相對(duì)路徑,默認(rèn)為空
?* @param?absolutPath_waittoProcessFileOrDir
?* ???????????文件或目錄的絕對(duì)路徑
?* @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
?* ???????????相對(duì)路徑
?* @param?absolutPath_waittoProcessFileOrDir
?* ???????????文件或文件夾絕對(duì)路徑
?* @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
?* ???????????文件對(duì)象
?* @param?relativePath_inzip
?* ???????????相對(duì)路徑
?* @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();
}
}
}
}
?