文件压缩,
??? /** 压缩一个文件 */? <br>??? private void compressfile(file file, templateentity te, zipoutputstream out, string basedir) {???<br>??????? if (!file.exists()) {???<br>?????????? return;???<br>??????? }?? <br>??????? bufferedinputstream bis = null;<br>??????? zipentry entry = null;<br>??????? try {<br>??????? ?//设置文件名编码<br>??????? ?out.setencoding("gbk");<br>??????? ?if( te != null ){<br>??????? ??entry = new zipentry(basedir+te.getname()+".html");<br>??????? ??//向rar中添加一个压缩文件<br>???????????? out.putnextentry(entry);<br>??????? ??//写入文本内容<br>??????? ??out.write(xmlutil.deletedomain(te).getbytes("utf8")); <br>??????? ??<br>??????? ?}else{<br>???????????? bis = new bufferedinputstream(? new fileinputstream(file));?? <br>???????????? //创建rar文件中的 压缩文件<br>???????????? entry = new zipentry(basedir + file.getname());? <br>???????????? //向rar中添加一个压缩文件<br>???????????? out.putnextentry(entry);?? <br>???????????? <br>???????????? int count;?? <br>???????????? byte data[] = new byte[buffer];?? <br>???????????? while ((count = bis.read(data, 0, buffer)) != -1) {?? <br>???????????????? out.write(data, 0, count);?? <br>???????????? }?? <br>???????????? bis.close();<br>??????? ?}<br>?????????????? <br>??????? } catch (exception e) {?? <br>??????????? throw new runtimeexception(e);?? <br>??????? }?? <br>??? }??
压缩完的zip包没有问题,但是我发现如果在你要压缩的文件在不同的文件夹中,很有可能这些文件夹中的文件有重名的,当压缩完之后,在压缩包中就会出现很多重复的文件,之前实现这个功能的时候原以为如果在压缩的时候如果有重复的文件会自动覆盖的,呜呜呜,有哪位碰到类似的问题,可以交流下