解決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)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法
Data Access Object數(shù)據(jù)訪問對象模式在Java操作數(shù)據(jù)庫部分的程序設(shè)計中經(jīng)常被使用到,這里我們就來看一下Java的MyBatis+Spring框架中使用數(shù)據(jù)訪問對象DAO模式的方法:2016-06-06
Kafka日志清理實(shí)現(xiàn)詳細(xì)過程講解
這篇文章主要為大家介紹了Kafka日志清理實(shí)現(xiàn)詳細(xì)過程講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
詳解jeefast和Mybatis實(shí)現(xiàn)二級聯(lián)動的問題
這篇文章主要介紹了詳解jeefast和Mybatis實(shí)現(xiàn)二級聯(lián)動的問題,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Spring mvc 實(shí)現(xiàn)用戶登錄的方法(攔截器)
這篇文章主要介紹了Spring mvc 實(shí)現(xiàn)用戶登錄的方法(攔截器),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
Spring?中的切面與事務(wù)結(jié)合使用完整示例
本文給大家介紹Spring中的切面與事務(wù)結(jié)合使用完整示例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-08-08
Java spring boot 實(shí)現(xiàn)支付寶支付功能的示例代碼
這篇文章主要介紹了Java spring boot 實(shí)現(xiàn)支付寶支付功能,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

