求:关于java怎么把许多附件打成zip压缩包 文件表里面有上次附件, 现在要做一个功能,就是把这些所以文件直接打成zip压缩包下载下来,并且里面还要有一级文件夹, 就是 压缩包里面是几个文件夹,文件夹下面放的是各自的文件。 求高手!最好附上代码 注释。 先谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java Zip压缩文件:import java.util.*;import java.util.zip.*;import java.io.*;class TestZip{ //压缩 public static void zip(String zipFileName , String inputFile)throws Exception { File f = new File(inputFile); ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName)); zip(out,f,null); System.out.println("zip done"); out.close(); } private static void zip(ZipOutputStream out,File f,String base)throws Exception { System.out.println("zipping " + f.getAbsolutePath()); if (f.isDirectory()) { File[] fc =f.listFiles(); if(base!=null) out.putNextEntry(new ZipEntry(base+"/")); base=base==null?"":base+"/"; for (int i=0;i<fc.length ;i++ ) { zip(out,fc[i],base+fc[i].getName()); } } else { out.putNextEntry(new ZipEntry(base)); FileInputStream in=new FileInputStream(f); int b; while ((b=in.read()) != -1) out.write(b); in.close(); } } //解压 public static void unzip(String zipFileName,String outputDirectory)throws Exception { ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName)); ZipEntry z; while ((z=in.getNextEntry() )!= null) { String name = z.getName(); if (z.isDirectory()) { name=name.substring(0,name.length()-1); File f=new File(outputDirectory+File.separator+name); f.mkdir(); System.out.println("MD "+outputDirectory+File.separator+name); } else { System.out.println("unziping "+z.getName()); File f=new File(outputDirectory+File.separator+name); f.createNewFile(); FileOutputStream out=new FileOutputStream(f); int b; while ((b=in.read()) != -1) out.write(b); out.close(); } } in.close(); } public static void main(String[] args) { try{ TestZip t=new TestZip(); // t.zip("c:\\test.zip","c:\\test");// t.unzip("c:\\test.zip","c:\\test2"); }catch(Exception e){ e.printStackTrace(System.out); } }} 仅供参考。 自己查API研究研究不就可以了,这样学的更深刻 求教大侠帮忙解释下这个代码!谢谢 Swing方面的问题,急!!! 文件路径不对? JSP 调用beans 如何提取html中的文本? 当菜单已经释放了,加载在菜单上的actionListener需不需要释放 在使用JDBC连接SQL Server 2000时发现无法使用getObject方法检索real类型的数据,这是为什么,请教各位大虾! 求助:我写的第一个程序就出问题了…… 回文数猜想 考试题目,救命啊 急!JDK6安装求助 java有关问题
import java.util.*;
import java.util.zip.*;
import java.io.*;
class TestZip
{
//压缩
public static void zip(String zipFileName , String inputFile)throws Exception
{
File f = new File(inputFile);
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
zip(out,f,null);
System.out.println("zip done");
out.close();
}
private static void zip(ZipOutputStream out,File f,String base)throws Exception
{
System.out.println("zipping " + f.getAbsolutePath());
if (f.isDirectory()) {
File[] fc =f.listFiles();
if(base!=null)
out.putNextEntry(new ZipEntry(base+"/"));
base=base==null?"":base+"/";
for (int i=0;i<fc.length ;i++ ) {
zip(out,fc[i],base+fc[i].getName());
}
}
else {
out.putNextEntry(new ZipEntry(base));
FileInputStream in=new FileInputStream(f);
int b;
while ((b=in.read()) != -1)
out.write(b);
in.close();
}
}
//解压
public static void unzip(String zipFileName,String outputDirectory)throws Exception
{
ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName));
ZipEntry z;
while ((z=in.getNextEntry() )!= null)
{
String name = z.getName();
if (z.isDirectory()) {
name=name.substring(0,name.length()-1);
File f=new File(outputDirectory+File.separator+name);
f.mkdir();
System.out.println("MD "+outputDirectory+File.separator+name);
}
else {
System.out.println("unziping "+z.getName());
File f=new File(outputDirectory+File.separator+name);
f.createNewFile();
FileOutputStream out=new FileOutputStream(f);
int b;
while ((b=in.read()) != -1)
out.write(b);
out.close();
}
}
in.close();
}
public static void main(String[] args)
{
try{
TestZip t=new TestZip();
// t.zip("c:\\test.zip","c:\\test");
// t.unzip("c:\\test.zip","c:\\test2");
}catch(Exception e){
e.printStackTrace(System.out);
}
}
} 仅供参考。