File tree 3 files changed +36
-0
lines changed
main/java/net/lingala/zip4j/model
3 files changed +36
-0
lines changed Original file line number Diff line number Diff line change 18
18
19
19
import net .lingala .zip4j .headers .HeaderSignature ;
20
20
21
+ import java .util .Objects ;
22
+
21
23
public class FileHeader extends AbstractFileHeader {
22
24
23
25
private int versionMadeBy ;
@@ -92,4 +94,26 @@ public void setFileComment(String fileComment) {
92
94
public String toString () {
93
95
return getFileName ();
94
96
}
97
+
98
+ @ Override
99
+ public boolean equals (Object o ) {
100
+ if (this == o ) return true ;
101
+ if (o == null || getClass () != o .getClass ()) return false ;
102
+ if (!super .equals (o )) return false ;
103
+ FileHeader that = (FileHeader ) o ;
104
+ return determineOffsetOfLocalFileHeader (this ) == determineOffsetOfLocalFileHeader (that );
105
+ }
106
+
107
+ @ Override
108
+ public int hashCode () {
109
+ return Objects .hash (getFileName (), determineOffsetOfLocalFileHeader (this ));
110
+ }
111
+
112
+ private long determineOffsetOfLocalFileHeader (FileHeader fileHeader ) {
113
+ if (fileHeader .getZip64ExtendedInfo () != null ) {
114
+ return fileHeader .getZip64ExtendedInfo ().getOffsetLocalHeader ();
115
+ }
116
+
117
+ return fileHeader .getOffsetLocalHeader ();
118
+ }
95
119
}
Original file line number Diff line number Diff line change @@ -234,6 +234,18 @@ public void testRemoveEntryWithAnotherSimilarNameFromZipRemovesOnlyTheEntryToBeR
234
234
assertZipFileDoesNotContainsFileByName (new ZipFile (zipFileUnderTest ), fileNameToRemove );
235
235
}
236
236
237
+ @ Test
238
+ public void testRemoveEntryFromAZipFileWithDuplicateEntriesRemovesSuccessfully () throws IOException {
239
+ TestUtils .copyFile (TestUtils .getTestArchiveFromResources ("zip_with_duplicate_entries.zip" ), generatedZipFile );
240
+ ZipFile zipFile = new ZipFile (generatedZipFile );
241
+ int actualNumberOfEntries = zipFile .getFileHeaders ().size ();
242
+ zipFile .removeFile ("sample.pdf" );
243
+
244
+ zipFile = new ZipFile (generatedZipFile );
245
+ assertThat (zipFile .getFileHeaders ().size ()).isEqualTo (actualNumberOfEntries - 1 );
246
+ assertZipFileDoesNotContainsFileByName (zipFile , "sample.pdf" );
247
+ }
248
+
237
249
private void testRemoveEntryFromZipWhichHasCentralDirEntriesInDifferentOrderThanLocalEntries (
238
250
String fileNameToRemove ) throws IOException {
239
251
TestUtils .copyFile (TestUtils .getTestArchiveFromResources ("cen_dir_entries_diff_order_as_local_entries.zip" ),
You can’t perform that action at this time.
0 commit comments