解決Java壓縮zip異常java.util.zip.ZipException:duplicate entry:問題
Java壓縮zip異常java.util.zip.ZipException:duplicate entry
在測試過程中看到后臺打印的日志出現(xiàn)異常
發(fā)現(xiàn)這也是歷史遺留問題:
java.util.zip.ZipException: duplicate entry: 111111.txt
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:215)
出現(xiàn)這種錯誤的原因是:打包的過程中,出現(xiàn)相同的文件名稱
關(guān)鍵代碼
public static void doCompress(File file, ZipOutputStream out) throws IOException { if( file.exists() ){ byte[] buffer = new byte[1024]; FileInputStream fis = new FileInputStream(file); out.putNextEntry(new ZipEntry(file.getName())); int len = 0 ; // 讀取文件的內(nèi)容,打包到zip文件 while ((len = fis.read(buffer)) > 0) { out.write(buffer, 0, len); } out.flush(); out.closeEntry(); fis.close(); } }
注意這里
out.putNextEntry(new ZipEntry(file.getName()));
參數(shù)file.getName()
存在相同的文件名稱時,就會出現(xiàn)開頭處的異常信息。
解決方法
針對文件名做唯一處理,后面見加上時間戳信息,也可以加上別的數(shù)據(jù),避免文件名一致
也就是在方法doCompress的參數(shù)file中,name應(yīng)該做唯一處理
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java后臺發(fā)起get請求獲取響應(yīng)數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了java后臺發(fā)起get請求獲取響應(yīng)數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Springboot @Value注入boolean設(shè)置默認(rèn)值方式
這篇文章主要介紹了Springboot @Value注入boolean設(shè)置默認(rèn)值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03