解決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)相同的文件名稱
關鍵代碼
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 ; // 讀取文件的內容,打包到zip文件 while ((len = fis.read(buffer)) > 0) { out.write(buffer, 0, len); } out.flush(); out.closeEntry(); fis.close(); } }
注意這里
out.putNextEntry(new ZipEntry(file.getName()));
參數file.getName()
存在相同的文件名稱時,就會出現(xiàn)開頭處的異常信息。
解決方法
針對文件名做唯一處理,后面見加上時間戳信息,也可以加上別的數據,避免文件名一致
也就是在方法doCompress的參數file中,name應該做唯一處理
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Springboot @Value注入boolean設置默認值方式
這篇文章主要介紹了Springboot @Value注入boolean設置默認值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03