测试代码:
public boolean inputZip(String inFileName,String outFileName)throws Exception{
File file = new File(inFileName);
if(!file.exists()){
System.out.println ("file is not exists");
return false;
}
FileOutputStream fos = new FileOutputStream(outFileName+".zip");
BufferedOutputStream bos = new BufferedOutputStream(fos,512);
ZipOutputStream zos = new ZipOutputStream(bos);
if(file.isFile()){
this.isFileToZip(file,zos);
}else if(file.isDirectory()){
this.isDirectoryToZip(file,zos);
}
zos.close();
bos.close();
fos.close();
zos = null;
bos = null;
fos = null;
return true;
}
public void isFileToZip(File file,ZipOutputStream zos)throws Exception{
ZipEntry ze = new ZipEntry(file.getPath());
zos.putNextEntry(ze);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis,512);
byte b[] = new byte[512];
int len;
while ((len=bis.read(b)) != -1){
zos.write(b,0,len);
}
bis.close();
fis.close();
bis = null;
fis = null;
}
public void isDirectoryToZip(File file,ZipOutputStream zos)throws Exception{
File listfile[] = file.listFiles();
for(int i=0;i<listfile.length;i++){
File lf = listfile[i];
if(lf.isFile()){
this.isFileToZip(lf,zos);
}else if(lf.isDirectory()){
this.isDirectoryToZip(lf,zos);
}
}
}
------------------------------------------------------------------
单个的文件如:a.txt
或者 多个文件夹和文件嵌套入:a/a.txt..........
但是无法压缩空的文件夹如:a往高手解决以下-------------------------
public boolean inputZip(String inFileName,String outFileName)throws Exception{
File file = new File(inFileName);
if(!file.exists()){
System.out.println ("file is not exists");
return false;
}
FileOutputStream fos = new FileOutputStream(outFileName+".zip");
BufferedOutputStream bos = new BufferedOutputStream(fos,512);
ZipOutputStream zos = new ZipOutputStream(bos);
if(file.isFile()){
this.isFileToZip(file,zos);
}else if(file.isDirectory()){
this.isDirectoryToZip(file,zos);
}
zos.close();
bos.close();
fos.close();
zos = null;
bos = null;
fos = null;
return true;
}
public void isFileToZip(File file,ZipOutputStream zos)throws Exception{
ZipEntry ze = new ZipEntry(file.getPath());
zos.putNextEntry(ze);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis,512);
byte b[] = new byte[512];
int len;
while ((len=bis.read(b)) != -1){
zos.write(b,0,len);
}
bis.close();
fis.close();
bis = null;
fis = null;
}
public void isDirectoryToZip(File file,ZipOutputStream zos)throws Exception{
File listfile[] = file.listFiles();
for(int i=0;i<listfile.length;i++){
File lf = listfile[i];
if(lf.isFile()){
this.isFileToZip(lf,zos);
}else if(lf.isDirectory()){
this.isDirectoryToZip(lf,zos);
}
}
}
------------------------------------------------------------------
单个的文件如:a.txt
或者 多个文件夹和文件嵌套入:a/a.txt..........
但是无法压缩空的文件夹如:a往高手解决以下-------------------------
if(listfile.length==0){
ZipEntry ze = new ZipEntry(file);
zos.putNextEntry(ze);
return;
}试试
加入---------------------------------
if(listfile.length==0){
ZipEntry ze = new ZipEntry(file.getPath()+"\\");
zos.putNextEntry(ze);
return;
}
---------------------------------------
结果是有一点问题的...