File file = new File("D:\\test.zip"); if(!file.exists()){ file.mkdirs(); file.createNewFile(); } FileOutputStream f= new FileOutputStream(file); CheckedOutputStream cos = new CheckedOutputStream(f,new Adler32()); ZipOutputStream zos = new ZipOutputStream(cos); String[] fileNames =new String[]{"D:\\dddd.hh","D:\\test.txt"}; BufferedOutputStream out = new BufferedOutputStream(zos); for(String fileName:fileNames){ System.out.println("开始压缩:"+fileName); BufferedReader in = new BufferedReader(new FileReader(fileName)); zos.putNextEntry(new ZipEntry(fileName)); int c; while((c=in.read())!=-1){ out.write(c); } in.close(); out.flush(); } out.close(); System.out.println("--- end ---");这是压缩文件的代码 你参考一下
文件名乱码问题可以由 name = new String(name.getBytes(), "ISO8859-1");这样转换一次就可以了。 文件多和大的时候就没有办法了,如果你想做得好的话就把下载分成两步 第一步先生成zip临时文件,客户端可以显示进度条(File.createTempFile创建) 第二步才是下载临时zip文件,下载完后删除临时文件
直接把你新压缩的zip文件 输出给客服端
客服端直接弹出下载的页面 下载这个zip 让用户自己去解压
if(!file.exists()){
file.mkdirs();
file.createNewFile();
}
FileOutputStream f= new FileOutputStream(file);
CheckedOutputStream cos = new CheckedOutputStream(f,new Adler32());
ZipOutputStream zos = new ZipOutputStream(cos);
String[] fileNames =new String[]{"D:\\dddd.hh","D:\\test.txt"};
BufferedOutputStream out = new BufferedOutputStream(zos);
for(String fileName:fileNames){
System.out.println("开始压缩:"+fileName);
BufferedReader in = new BufferedReader(new FileReader(fileName));
zos.putNextEntry(new ZipEntry(fileName));
int c;
while((c=in.read())!=-1){
out.write(c);
}
in.close();
out.flush();
}
out.close();
System.out.println("--- end ---");这是压缩文件的代码 你参考一下
name = new String(name.getBytes(), "ISO8859-1");这样转换一次就可以了。
文件多和大的时候就没有办法了,如果你想做得好的话就把下载分成两步
第一步先生成zip临时文件,客户端可以显示进度条(File.createTempFile创建)
第二步才是下载临时zip文件,下载完后删除临时文件