真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼壓縮文件夾,JAVA壓縮文件夾

如何使用java壓縮文件夾成為zip包(最簡單的

import java.io.File;

創(chuàng)新互聯(lián)建站是專業(yè)的嘉興網(wǎng)站建設公司,嘉興接單;提供網(wǎng)站設計制作、做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行嘉興網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

public class ZipCompressorByAnt {

private File zipFile;

/**

* 壓縮文件構造函數(shù)

* @param pathName 最終壓縮生成的壓縮文件:目錄+壓縮文件名.zip

*/

public ZipCompressorByAnt(String finalFile) {

zipFile = new File(finalFile);

}

/**

* 執(zhí)行壓縮操作

* @param srcPathName 需要被壓縮的文件/文件夾

*/

public void compressExe(String srcPathName) {

System.out.println("srcPathName="+srcPathName);

File srcdir = new File(srcPathName);

if (!srcdir.exists()){

throw new RuntimeException(srcPathName + "不存在!");

}

Project prj = new Project();

Zip zip = new Zip();

zip.setProject(prj);

zip.setDestFile(zipFile);

FileSet fileSet = new FileSet();

fileSet.setProject(prj);

fileSet.setDir(srcdir);

//fileSet.setIncludes("**/*.java"); //包括哪些文件或文件夾 eg:zip.setIncludes("*.java");

//fileSet.setExcludes(...); //排除哪些文件或文件夾

zip.addFileset(fileSet);

zip.execute();

}?? ?

}

public class TestZip {

public static void main(String[] args) {

ZipCompressorByAnt zca = new ZipCompressorByAnt("E:\\test1.zip ");

zca.compressExe("E:\\test1");

} ?

}

/*如果 出現(xiàn)ant 的 52? 51 50 等版本問題 可以去找對應的ant-1.8.2.jar???? 我開始用的ant-1.10.1.jar 就是這個包版本高了? 一直報verson 52 版本問題*/

java實現(xiàn)文件與文件夾壓縮

件夾又有文件與文件夾(下一個目錄里是文件),純java實現(xiàn),要實

如何使用java壓縮文件夾成為zip包

在JDK中有一個zip工具類:

java.util.zip ? ?Provides classes for reading and writing the standard ZIP and

GZIP file formats.

使用此類可以將文件夾或者多個文件進行打包壓縮操作。

在使用之前先了解關鍵方法:

ZipEntry(String name) ????????Creates a new zip entry with the specified name.

使用ZipEntry的構造方法可以創(chuàng)建一個zip壓縮文件包的實例,然后通過ZipOutputStream將待壓縮的文件以流的形式寫進該壓縮包中。具體實現(xiàn)代碼如下:

import?java.io.BufferedInputStream;??

import?java.io.BufferedOutputStream;??

import?java.io.File;??

import?java.io.FileInputStream;??

import?java.io.FileNotFoundException;??

import?java.io.FileOutputStream;??

import?java.io.IOException;??

import?java.util.zip.ZipEntry;??

import?java.util.zip.ZipOutputStream;??

/**?

*?將文件夾下面的文件?

*?打包成zip壓縮文件?

*??

*?@author?admin?

*?

*/??

public?final?class?FileToZip?{??

private?FileToZip(){}??

/**?

*?將存放在sourceFilePath目錄下的源文件,打包成fileName名稱的zip文件,并存放到zipFilePath路徑下?

*?@param?sourceFilePath?:待壓縮的文件路徑?

*?@param?zipFilePath?:壓縮后存放路徑?

*?@param?fileName?:壓縮后文件的名稱?

*?@return?

*/??

public?static?boolean?fileToZip(String?sourceFilePath,String?zipFilePath,String?fileName){??

boolean?flag?=?false;??

File?sourceFile?=?new?File(sourceFilePath);??

FileInputStream?fis?=?null;??

BufferedInputStream?bis?=?null;??

FileOutputStream?fos?=?null;??

ZipOutputStream?zos?=?null;??

if(sourceFile.exists()?==?false){??

System.out.println("待壓縮的文件目錄:"+sourceFilePath+"不存在.");??

}else{??

try?{??

File?zipFile?=?new?File(zipFilePath?+?"/"?+?fileName?+".zip");??

if(zipFile.exists()){??

System.out.println(zipFilePath?+?"目錄下存在名字為:"?+?fileName?+".zip"?+"打包文件.");??

}else{??

File[]?sourceFiles?=?sourceFile.listFiles();??

if(null?==?sourceFiles?||?sourceFiles.length1){??

System.out.println("待壓縮的文件目錄:"?+?sourceFilePath?+?"里面不存在文件,無需壓縮.");??

}else{??

fos?=?new?FileOutputStream(zipFile);??

zos?=?new?ZipOutputStream(new?BufferedOutputStream(fos));??

byte[]?bufs?=?new?byte[1024*10];??

for(int?i=0;isourceFiles.length;i++){??

//創(chuàng)建ZIP實體,并添加進壓縮包??

ZipEntry?zipEntry?=?new?ZipEntry(sourceFiles[i].getName());??

zos.putNextEntry(zipEntry);??

//讀取待壓縮的文件并寫進壓縮包里??

fis?=?new?FileInputStream(sourceFiles[i]);??

bis?=?new?BufferedInputStream(fis,?1024*10);??

int?read?=?0;??

while((read=bis.read(bufs,?0,?1024*10))?!=?-1){??

zos.write(bufs,0,read);??

}??

}??

flag?=?true;??

}??

}??

}?catch?(FileNotFoundException?e)?{??

e.printStackTrace();??

throw?new?RuntimeException(e);??

}?catch?(IOException?e)?{??

e.printStackTrace();??

throw?new?RuntimeException(e);??

}?finally{??

//關閉流??

try?{??

if(null?!=?bis)?bis.close();??

if(null?!=?zos)?zos.close();??

}?catch?(IOException?e)?{??

e.printStackTrace();??

throw?new?RuntimeException(e);??

}??

}??

}??

return?flag;??

}??

public?static?void?main(String[]?args){??

String?sourceFilePath?=?"D:\\TestFile";??

String?zipFilePath?=?"D:\\tmp";??

String?fileName?=?"12700153file";??

boolean?flag?=?FileToZip.fileToZip(sourceFilePath,?zipFilePath,?fileName);??

if(flag){??

System.out.println("文件打包成功!");??

}else{??

System.out.println("文件打包失敗!");??

}??

}??

}

java 關于壓縮文件夾的問題

//建立路徑這里 不是很明白

out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));

base = base.length() == 0 ? "" : base + "/";

要保留zip里面的目錄結構,所以,是先放入當前目錄及上層所有目錄

怎樣用java快速實現(xiàn)zip文件的壓縮解壓縮

package?zip;

import?java.io.BufferedInputStream;

import?java.io.BufferedOutputStream;

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.util.Enumeration;

import?java.util.zip.CRC32;

import?java.util.zip.CheckedOutputStream;

import?java.util.zip.ZipEntry;

import?java.util.zip.ZipFile;

import?java.util.zip.ZipOutputStream;

import?org.apache.commons.lang3.StringUtils;

public?class?ZipUtil?{

/**

?*?遞歸壓縮文件夾

?*?@param?srcRootDir?壓縮文件夾根目錄的子路徑

?*?@param?file?當前遞歸壓縮的文件或目錄對象

?*?@param?zos?壓縮文件存儲對象

?*?@throws?Exception

?*/

private?static?void?zip(String?srcRootDir,?File?file,?ZipOutputStream?zos)?throws?Exception

{

if?(file?==?null)?

{

return;

}

//如果是文件,則直接壓縮該文件

if?(file.isFile())

{

int?count,?bufferLen?=?1024;

byte?data[]?=?new?byte[bufferLen];

//獲取文件相對于壓縮文件夾根目錄的子路徑

String?subPath?=?file.getAbsolutePath();

int?index?=?subPath.indexOf(srcRootDir);

if?(index?!=?-1)?

{

subPath?=?subPath.substring(srcRootDir.length()?+?File.separator.length());

}

ZipEntry?entry?=?new?ZipEntry(subPath);

zos.putNextEntry(entry);

BufferedInputStream?bis?=?new?BufferedInputStream(new?FileInputStream(file));

while?((count?=?bis.read(data,?0,?bufferLen))?!=?-1)?

{

zos.write(data,?0,?count);

}

bis.close();

zos.closeEntry();

}

//如果是目錄,則壓縮整個目錄

else?

{

//壓縮目錄中的文件或子目錄

File[]?childFileList?=?file.listFiles();

for?(int?n=0;?nchildFileList.length;?n++)

{

childFileList[n].getAbsolutePath().indexOf(file.getAbsolutePath());

zip(srcRootDir,?childFileList[n],?zos);

}

}

}

/**

?*?對文件或文件目錄進行壓縮

?*?@param?srcPath?要壓縮的源文件路徑。如果壓縮一個文件,則為該文件的全路徑;如果壓縮一個目錄,則為該目錄的頂層目錄路徑

?*?@param?zipPath?壓縮文件保存的路徑。注意:zipPath不能是srcPath路徑下的子文件夾

?*?@param?zipFileName?壓縮文件名

?*?@throws?Exception

?*/

public?static?void?zip(String?srcPath,?String?zipPath,?String?zipFileName)?throws?Exception

{

if?(StringUtils.isEmpty(srcPath)?||?StringUtils.isEmpty(zipPath)?||?StringUtils.isEmpty(zipFileName))

{

throw?new?ParameterException(ICommonResultCode.PARAMETER_IS_NULL);

}

CheckedOutputStream?cos?=?null;

ZipOutputStream?zos?=?null;

try

{

File?srcFile?=?new?File(srcPath);

//判斷壓縮文件保存的路徑是否為源文件路徑的子文件夾,如果是,則拋出異常(防止無限遞歸壓縮的發(fā)生)

if?(srcFile.isDirectory()??zipPath.indexOf(srcPath)!=-1)?

{

throw?new?ParameterException(ICommonResultCode.INVALID_PARAMETER,?"zipPath?must?not?be?the?child?directory?of?srcPath.");

}

//判斷壓縮文件保存的路徑是否存在,如果不存在,則創(chuàng)建目錄

File?zipDir?=?new?File(zipPath);

if?(!zipDir.exists()?||?!zipDir.isDirectory())

{

zipDir.mkdirs();

}

//創(chuàng)建壓縮文件保存的文件對象

String?zipFilePath?=?zipPath?+?File.separator?+?zipFileName;

File?zipFile?=?new?File(zipFilePath);

if?(zipFile.exists())

{

//檢測文件是否允許刪除,如果不允許刪除,將會拋出SecurityException

SecurityManager?securityManager?=?new?SecurityManager();

securityManager.checkDelete(zipFilePath);

//刪除已存在的目標文件

zipFile.delete();

}

cos?=?new?CheckedOutputStream(new?FileOutputStream(zipFile),?new?CRC32());

zos?=?new?ZipOutputStream(cos);

//如果只是壓縮一個文件,則需要截取該文件的父目錄

String?srcRootDir?=?srcPath;

if?(srcFile.isFile())

{

int?index?=?srcPath.lastIndexOf(File.separator);

if?(index?!=?-1)

{

srcRootDir?=?srcPath.substring(0,?index);

}

}

//調(diào)用遞歸壓縮方法進行目錄或文件壓縮

zip(srcRootDir,?srcFile,?zos);

zos.flush();

}

catch?(Exception?e)?

{

throw?e;

}

finally?

{

try

{

if?(zos?!=?null)

{

zos.close();

}

}

catch?(Exception?e)

{

e.printStackTrace();

}

}

}

/**

?*?解壓縮zip包

?*?@param?zipFilePath?zip文件的全路徑

?*?@param?unzipFilePath?解壓后的文件保存的路徑

?*?@param?includeZipFileName?解壓后的文件保存的路徑是否包含壓縮文件的文件名。true-包含;false-不包含

?*/

@SuppressWarnings("unchecked")

public?static?void?unzip(String?zipFilePath,?String?unzipFilePath,?boolean?includeZipFileName)?throws?Exception

{

if?(StringUtils.isEmpty(zipFilePath)?||?StringUtils.isEmpty(unzipFilePath))

{

throw?new?ParameterException(ICommonResultCode.PARAMETER_IS_NULL);

}

File?zipFile?=?new?File(zipFilePath);

//如果解壓后的文件保存路徑包含壓縮文件的文件名,則追加該文件名到解壓路徑

if?(includeZipFileName)

{

String?fileName?=?zipFile.getName();

if?(StringUtils.isNotEmpty(fileName))

{

fileName?=?fileName.substring(0,?fileName.lastIndexOf("."));

}

unzipFilePath?=?unzipFilePath?+?File.separator?+?fileName;

}

//創(chuàng)建解壓縮文件保存的路徑

File?unzipFileDir?=?new?File(unzipFilePath);

if?(!unzipFileDir.exists()?||?!unzipFileDir.isDirectory())

{

unzipFileDir.mkdirs();

}

//開始解壓

ZipEntry?entry?=?null;

String?entryFilePath?=?null,?entryDirPath?=?null;

File?entryFile?=?null,?entryDir?=?null;

int?index?=?0,?count?=?0,?bufferSize?=?1024;

byte[]?buffer?=?new?byte[bufferSize];

BufferedInputStream?bis?=?null;

BufferedOutputStream?bos?=?null;

ZipFile?zip?=?new?ZipFile(zipFile);

EnumerationZipEntry?entries?=?(EnumerationZipEntry)zip.entries();

//循環(huán)對壓縮包里的每一個文件進行解壓

while(entries.hasMoreElements())

{

entry?=?entries.nextElement();

//構建壓縮包中一個文件解壓后保存的文件全路徑

entryFilePath?=?unzipFilePath?+?File.separator?+?entry.getName();

//構建解壓后保存的文件夾路徑

index?=?entryFilePath.lastIndexOf(File.separator);

if?(index?!=?-1)

{

entryDirPath?=?entryFilePath.substring(0,?index);

}

else

{

entryDirPath?=?"";

}

entryDir?=?new?File(entryDirPath);

//如果文件夾路徑不存在,則創(chuàng)建文件夾

if?(!entryDir.exists()?||?!entryDir.isDirectory())

{

entryDir.mkdirs();

}

//創(chuàng)建解壓文件

entryFile?=?new?File(entryFilePath);

if?(entryFile.exists())

{

//檢測文件是否允許刪除,如果不允許刪除,將會拋出SecurityException

SecurityManager?securityManager?=?new?SecurityManager();

securityManager.checkDelete(entryFilePath);

//刪除已存在的目標文件

entryFile.delete();

}

//寫入文件

bos?=?new?BufferedOutputStream(new?FileOutputStream(entryFile));

bis?=?new?BufferedInputStream(zip.getInputStream(entry));

while?((count?=?bis.read(buffer,?0,?bufferSize))?!=?-1)

{

bos.write(buffer,?0,?count);

}

bos.flush();

bos.close();

}

}

public?static?void?main(String[]?args)?

{

String?zipPath?=?"d:\\ziptest\\zipPath";

String?dir?=?"d:\\ziptest\\rawfiles";

String?zipFileName?=?"test.zip";

try

{

zip(dir,?zipPath,?zipFileName);

}?

catch?(Exception?e)

{

e.printStackTrace();

}

String?zipFilePath?=?"D:\\ziptest\\zipPath\\test.zip";

String?unzipFilePath?=?"D:\\ziptest\\zipPath";

try?

{

unzip(zipFilePath,?unzipFilePath,?true);

}

catch?(Exception?e)

{

e.printStackTrace();

}

}

}

java 什么算法壓縮文件最小

有三種方式實現(xiàn)java壓縮:

1、jdk自帶的包java.util.zip.ZipOutputStream,不足之處,文件(夾)名稱帶中文時,出現(xiàn)亂碼問題,實現(xiàn)代碼如下:

/**

* 功能:把 sourceDir 目錄下的所有文件進行 zip 格式的壓縮,保存為指定 zip 文件

* @param sourceDir 如果是目錄,eg:D:\\MyEclipse\\first\\testFile,則壓縮目錄下所有文件;

* 如果是文件,eg:D:\\MyEclipse\\first\\testFile\\aa.zip,則只壓縮本文件

* @param zipFile 最后壓縮的文件路徑和名稱,eg:D:\\MyEclipse\\first\\testFile\\aa.zip

*/

public File doZip(String sourceDir, String zipFilePath) throws IOException {

File file = new File(sourceDir);

File zipFile = new File(zipFilePath);

ZipOutputStream zos = null;

try {

// 創(chuàng)建寫出流操作

OutputStream os = new FileOutputStream(zipFile);

BufferedOutputStream bos = new BufferedOutputStream(os);

zos = new ZipOutputStream(bos);

String basePath = null;

// 獲取目錄

if(file.isDirectory()) {

basePath = file.getPath();

}else {

basePath = file.getParent();

}

zipFile(file, basePath, zos);

}finally {

if(zos != null) {

zos.closeEntry();

zos.close();

}

}

return zipFile;

}

/**

* @param source 源文件

* @param basePath

* @param zos

*/

private void zipFile(File source, String basePath, ZipOutputStream zos)

throws IOException {

File[] files = null;

if (source.isDirectory()) {

files = source.listFiles();

} else {

files = new File[1];

files[0] = source;

}

InputStream is = null;

String pathName;

byte[] buf = new byte[1024];

int length = 0;

try{

for(File file : files) {

if(file.isDirectory()) {

pathName = file.getPath().substring(basePath.length() + 1) + "/";

zos.putNextEntry(new ZipEntry(pathName));

zipFile(file, basePath, zos);

}else {

pathName = file.getPath().substring(basePath.length() + 1);

is = new FileInputStream(file);

BufferedInputStream bis = new BufferedInputStream(is);

zos.putNextEntry(new ZipEntry(pathName));

while ((length = bis.read(buf)) 0) {

zos.write(buf, 0, length);

}

}

}

}finally {

if(is != null) {

is.close();

}

}

}

2、使用org.apache.tools.zip.ZipOutputStream,代碼如下,

package net.szh.zip;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.CRC32;

import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

public class ZipCompressor {

static final int BUFFER = 8192;

private File zipFile;

public ZipCompressor(String pathName) {

zipFile = new File(pathName);

}

public void compress(String srcPathName) {

File file = new File(srcPathName);

if (!file.exists())

throw new RuntimeException(srcPathName + "不存在!");

try {

FileOutputStream fileOutputStream = new FileOutputStream(zipFile);

CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,

new CRC32());

ZipOutputStream out = new ZipOutputStream(cos);

String basedir = "";

compress(file, out, basedir);

out.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

private void compress(File file, ZipOutputStream out, String basedir) {

/* 判斷是目錄還是文件 */

if (file.isDirectory()) {

System.out.println("壓縮:" + basedir + file.getName());

this.compressDirectory(file, out, basedir);

} else {

System.out.println("壓縮:" + basedir + file.getName());

this.compressFile(file, out, basedir);

}

}

/** 壓縮一個目錄 */

private void compressDirectory(File dir, ZipOutputStream out, String basedir) {

if (!dir.exists())

return;

File[] files = dir.listFiles();

for (int i = 0; i files.length; i++) {

/* 遞歸 */

compress(files[i], out, basedir + dir.getName() + "/");

}

}

/** 壓縮一個文件 */

private void compressFile(File file, ZipOutputStream out, String basedir) {

if (!file.exists()) {

return;

}

try {

BufferedInputStream bis = new BufferedInputStream(

new FileInputStream(file));

ZipEntry entry = new ZipEntry(basedir + file.getName());

out.putNextEntry(entry);

int count;

byte data[] = new byte[BUFFER];

while ((count = bis.read(data, 0, BUFFER)) != -1) {

out.write(data, 0, count);

}

bis.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

3、可以用ant中的org.apache.tools.ant.taskdefs.Zip來實現(xiàn),更加簡單。

package net.szh.zip;

import java.io.File;

import org.apache.tools.ant.Project;

import org.apache.tools.ant.taskdefs.Zip;

import org.apache.tools.ant.types.FileSet;

public class ZipCompressorByAnt {

private File zipFile;

public ZipCompressorByAnt(String pathName) {

zipFile = new File(pathName);

}

public void compress(String srcPathName) {

File srcdir = new File(srcPathName);

if (!srcdir.exists())

throw new RuntimeException(srcPathName + "不存在!");

Project prj = new Project();

Zip zip = new Zip();

zip.setProject(prj);

zip.setDestFile(zipFile);

FileSet fileSet = new FileSet();

fileSet.setProject(prj);

fileSet.setDir(srcdir);

//fileSet.setIncludes("**/*.java"); 包括哪些文件或文件夾 eg:zip.setIncludes("*.java");

//fileSet.setExcludes(...); 排除哪些文件或文件夾

zip.addFileset(fileSet);

zip.execute();

}

}

測試一下

package net.szh.zip;

public class TestZip {

public static void main(String[] args) {

ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip");

zc.compress("E:\\test");

ZipCompressorByAnt zca = new ZipCompressorByAnt("E:\\szhzipant.zip");

zca.compress("E:\\test");

}

}


當前文章:java代碼壓縮文件夾,JAVA壓縮文件夾
標題鏈接:http://weahome.cn/article/hdgios.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部