@@ -33,100 +33,57 @@ private static void writeIntLE(OutputStream os, int value) throws IOException {
3333 public void write (ZipArchive archive , OutputStream os ) throws IOException {
3434 // Write local file headers.
3535 for (final LocalFileHeader fileHeader : archive .getLocalFiles ()) {
36- // Header
3736 writeIntLE (os , ZipPatterns .LOCAL_FILE_HEADER_QUAD );
38- // Minimum version
3937 writeShortLE (os , fileHeader .getVersionNeededToExtract ());
40- // General purpose bit flag
4138 writeShortLE (os , fileHeader .getGeneralPurposeBitFlag ());
42- // Compression method
4339 writeShortLE (os , fileHeader .getCompressionMethod ());
44- // Last modification time
4540 writeShortLE (os , fileHeader .getLastModFileTime ());
46- // Last modification date
4741 writeShortLE (os , fileHeader .getLastModFileDate ());
48- // CRC32
4942 writeIntLE (os , fileHeader .getCrc32 ());
50- // Compressed size
5143 writeIntLE (os , (int ) fileHeader .getCompressedSize ());
52- // Uncompressed size
5344 writeIntLE (os , (int ) fileHeader .getUncompressedSize ());
54- // File name length
5545 writeShortLE (os , fileHeader .getFileNameLength ());
56- // Extra field length
5746 writeShortLE (os , fileHeader .getExtraFieldLength ());
58- // File name
5947 os .write (ByteDataUtil .toByteArray (fileHeader .getFileName ()));
60- // Extra field
6148 os .write (ByteDataUtil .toByteArray (fileHeader .getExtraField ()));
62- // Compressed data
6349 os .write (ByteDataUtil .toByteArray (fileHeader .getFileData ()));
6450 }
6551
6652 // Write central directory file headers.
6753 for (final CentralDirectoryFileHeader directory : archive .getCentralDirectories ()) {
68- // Header
6954 writeIntLE (os , ZipPatterns .CENTRAL_DIRECTORY_FILE_HEADER_QUAD );
70- // Made by
7155 writeShortLE (os , directory .getVersionMadeBy ());
72- // Minimum version
7356 writeShortLE (os , directory .getVersionNeededToExtract ());
74- // General purpose bit flag
7557 writeShortLE (os , directory .getGeneralPurposeBitFlag ());
76- // Compression method
7758 writeShortLE (os , directory .getCompressionMethod ());
78- // Last modification time
7959 writeShortLE (os , directory .getLastModFileTime ());
80- // Last modification date
8160 writeShortLE (os , directory .getLastModFileDate ());
82- // CRC32
8361 writeIntLE (os , directory .getCrc32 ());
84- // Compressed size
8562 writeIntLE (os , (int ) directory .getCompressedSize ());
86- // Uncompressed size
8763 writeIntLE (os , (int ) directory .getUncompressedSize ());
88- // File name length
8964 writeShortLE (os , directory .getFileNameLength ());
90- // Extra field length
9165 writeShortLE (os , directory .getExtraFieldLength ());
92- // File comment length
9366 writeShortLE (os , directory .getFileCommentLength ());
94- // Disk number where file starts
9567 writeShortLE (os , directory .getDiskNumberStart ());
96- // Internal file attributes
9768 writeShortLE (os , directory .getInternalFileAttributes ());
98- // External file attributes
9969 writeIntLE (os , directory .getExternalFileAttributes ());
100- // Relative offset of local file header
10170 writeIntLE (os , (int ) directory .getRelativeOffsetOfLocalHeader ());
102- // File name
10371 os .write (ByteDataUtil .toByteArray (directory .getFileName ()));
104- // Extra field
10572 os .write (ByteDataUtil .toByteArray (directory .getExtraField ()));
106- // File comment
10773 os .write (ByteDataUtil .toByteArray (directory .getFileComment ()));
10874 }
10975
11076 // Write end of central directory record.
11177 final EndOfCentralDirectory end = archive .getEnd ();
11278 if (end != null ) {
113- // Header
11479 writeIntLE (os , ZipPatterns .END_OF_CENTRAL_DIRECTORY_QUAD );
115- // Disk number
11680 writeShortLE (os , end .getDiskNumber ());
117- // Central directory start disk
11881 writeShortLE (os , end .getCentralDirectoryStartDisk ());
119- // TODO What is this?
12082 writeShortLE (os , end .getCentralDirectoryStartOffset ());
121- // Central directory entries
12283 writeShortLE (os , end .getNumEntries ());
123- // Central directory size
12484 writeIntLE (os , (int ) end .getCentralDirectorySize ());
125- // Central directory offset
12685 writeIntLE (os , (int ) end .getCentralDirectoryOffset ());
127- // Comment length
12886 writeShortLE (os , end .getZipCommentLength ());
129- // Comment
13087 os .write (ByteDataUtil .toByteArray (end .getZipComment ()));
13188 }
13289 }
0 commit comments