Atitit java zip compress use apache tool jar
Atitit java zip compress use apache tool jar
?
壓縮的問題
static void
zip(java.lang.String?zipFileName,
?java.lang.String?absolutPath_waittoProcessFileOrDir)?
?
只應(yīng)該這倆個參數(shù)。。網(wǎng)上的在多重目錄下有bug,花了好長時間修復(fù)bug
應(yīng)該啊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)
創(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
?* ???????????相對路徑,默認(rèn)為空
?* @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();
}
}
}
}
?