|
35 | 35 | public abstract class EncryptedEntryOutputStream extends OutputStream {
|
36 | 36 |
|
37 | 37 | protected final ZipEntry zipEntry;
|
38 |
| - protected final DataOutput out; |
| 38 | + private final DataOutput out; |
39 | 39 | protected final EncoderDataOutput encoderDataOutput;
|
40 | 40 | protected final EntryMetadataOutputStream emos;
|
41 | 41 |
|
42 |
| - public static EncryptedEntryOutputStream create(ZipEntry zipEntry, DataOutput out) throws IOException { |
| 42 | + public static EncryptedEntryOutputStream create(ZipEntry zipEntry, |
| 43 | + DataOutput out, |
| 44 | + EncoderDataOutput encoderDataOutput) throws IOException { |
43 | 45 | CompressionMethod compressionMethod = zipEntry.getCompressionMethod();
|
44 | 46 | zipEntry.setDiskNo(out.getDiskNo());
|
45 | 47 |
|
46 | 48 | if (compressionMethod == CompressionMethod.STORE)
|
47 |
| - return new StoreEntryOutputStream(zipEntry, out, createEncoderDataOutput(zipEntry, out)); |
| 49 | + return new StoreEntryOutputStream(zipEntry, out, encoderDataOutput); |
48 | 50 | if (compressionMethod == CompressionMethod.DEFLATE)
|
49 |
| - return new DeflateEntryOutputStream(zipEntry, out, createEncoderDataOutput(zipEntry, out)); |
| 51 | + return new DeflateEntryOutputStream(zipEntry, out, encoderDataOutput); |
50 | 52 | if (compressionMethod == CompressionMethod.BZIP2)
|
51 |
| - return new Bzip2EntryOutputStream(zipEntry, out, createEncoderDataOutput(zipEntry, out)); |
| 53 | + return new Bzip2EntryOutputStream(zipEntry, out, encoderDataOutput); |
52 | 54 | if (compressionMethod == CompressionMethod.LZMA)
|
53 |
| - return new LzmaEntryOutputStream(zipEntry, out, createEncoderDataOutput(zipEntry, out)); |
| 55 | + return new LzmaEntryOutputStream(zipEntry, out, encoderDataOutput); |
54 | 56 | if (compressionMethod == CompressionMethod.ZSTD)
|
55 |
| - return new ZstdEntryOutputStream(zipEntry, out, createEncoderDataOutput(zipEntry, out)); |
| 57 | + return new ZstdEntryOutputStream(zipEntry, out, encoderDataOutput); |
56 | 58 |
|
57 | 59 | throw new Zip4jvmException("Compression '%s' is not supported", compressionMethod);
|
58 | 60 | }
|
59 | 61 |
|
60 |
| - private static EncoderDataOutput createEncoderDataOutput(ZipEntry zipEntry, DataOutput out) { |
61 |
| - return new EncoderDataOutput(zipEntry.createEncoder(), out); |
62 |
| - } |
63 |
| - |
64 | 62 | protected EncryptedEntryOutputStream(ZipEntry zipEntry, DataOutput out, EncoderDataOutput encoderDataOutput) {
|
65 | 63 | this.zipEntry = zipEntry;
|
66 | 64 | this.out = out;
|
@@ -94,6 +92,6 @@ public void close() throws IOException {
|
94 | 92 |
|
95 | 93 | @Override
|
96 | 94 | public String toString() {
|
97 |
| - return out.toString(); |
| 95 | + return emos.toString(); |
98 | 96 | }
|
99 | 97 | }
|
0 commit comments