程序如下:(一部分是copy的)
package zipfile;
import java.util.zip.*;
import java.io.*;public class makeZIP
{
static final int BUFFER=2048*5;
static BufferedInputStream orign=null;
static int count=0;
public static void main(String[] args)
{
try{
String path="j:\\ws1";
compress(path);
}catch (Exception e){
e.printStackTrace();
}
}
public static void compress(String root)throws Exception
{
try{ //建立目标输出流
FileOutputStream dest=new FileOutputStream("j:\\zip\\ws.zip");
ZipOutputStream out=new ZipOutputStream( new BufferedOutputStream(dest) );
//实例化新文件
File f=new File(root);
String[] files=f.list();
String d=null;
// byte[] data=new byte[BUFFER];
byte[] data=new byte[BUFFER];
System.out.println("root is"+root);
for(int i=0;i<files.length;i++)
{
File f1=new File(root,files[i]);
//如果是文件,进行压缩
if(f1.isFile() )
{ //加文件路径,否则找不到文件!!
d=root + "\\" +files[i];
System.out.println(d);
//设置文件输入流
FileInputStream in=new FileInputStream(d);
orign=new BufferedInputStream(in,BUFFER);
//为读出的数据创建一个zip条目表
ZipEntry entry=new ZipEntry(d);
//将zip条目列表写入输出流
out.putNextEntry(entry); // while( (count=orign.read(data,0,BUFFER))!=-1)
// {
// System.out.println("要处理的文件集:"+d);
// out.write(data,0,BUFFER);
// }
while ( (count = orign.read())!=-1)
{
out.write(count);
} count=0;
orign.close();
}
//如果是子目录进行递归调用!
else{
String sub=f1.getPath();
System.out.println("sub is:"+sub);
compress(sub);
}
}
out.close();
}catch(Exception e){throw e;}
}
}
现在测试存在几个问题:中文文件名解压时显示不对,包含子目录的文件上传有错误,请指教
package zipfile;
import java.util.zip.*;
import java.io.*;public class makeZIP
{
static final int BUFFER=2048*5;
static BufferedInputStream orign=null;
static int count=0;
public static void main(String[] args)
{
try{
String path="j:\\ws1";
compress(path);
}catch (Exception e){
e.printStackTrace();
}
}
public static void compress(String root)throws Exception
{
try{ //建立目标输出流
FileOutputStream dest=new FileOutputStream("j:\\zip\\ws.zip");
ZipOutputStream out=new ZipOutputStream( new BufferedOutputStream(dest) );
//实例化新文件
File f=new File(root);
String[] files=f.list();
String d=null;
// byte[] data=new byte[BUFFER];
byte[] data=new byte[BUFFER];
System.out.println("root is"+root);
for(int i=0;i<files.length;i++)
{
File f1=new File(root,files[i]);
//如果是文件,进行压缩
if(f1.isFile() )
{ //加文件路径,否则找不到文件!!
d=root + "\\" +files[i];
System.out.println(d);
//设置文件输入流
FileInputStream in=new FileInputStream(d);
orign=new BufferedInputStream(in,BUFFER);
//为读出的数据创建一个zip条目表
ZipEntry entry=new ZipEntry(d);
//将zip条目列表写入输出流
out.putNextEntry(entry); // while( (count=orign.read(data,0,BUFFER))!=-1)
// {
// System.out.println("要处理的文件集:"+d);
// out.write(data,0,BUFFER);
// }
while ( (count = orign.read())!=-1)
{
out.write(count);
} count=0;
orign.close();
}
//如果是子目录进行递归调用!
else{
String sub=f1.getPath();
System.out.println("sub is:"+sub);
compress(sub);
}
}
out.close();
}catch(Exception e){throw e;}
}
}
现在测试存在几个问题:中文文件名解压时显示不对,包含子目录的文件上传有错误,请指教
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货