Example #1
0
        private void WriteArchiveDirectoryToStream(Stream writer)
        {
            long position = writer.Position;

            foreach (ZipArchiveFile value in this.entries.Values)
            {
                value.WriteArchiveDirectoryEntryToStream(writer);
            }
            long       num        = writer.Position;
            ByteBuffer byteBuffer = new ByteBuffer(22);

            byteBuffer.WriteUInt32(101010256);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16((ushort)this.entries.Count);
            byteBuffer.WriteUInt16((ushort)this.entries.Count);
            byteBuffer.WriteUInt32((uint)(num - position));
            byteBuffer.WriteUInt32((uint)position);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteContentsTo(writer);
        }
Example #2
0
        private void WriteZipFileHeader(Stream writer)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(this.name.Replace(Path.DirectorySeparatorChar, '/'));
            if ((ulong)((uint)this.length) != this.length)
            {
                throw new ApplicationException("File length too long.");
            }
            this.headerOffset = (uint)writer.Position;
            ByteBuffer byteBuffer = new ByteBuffer(30);

            byteBuffer.WriteUInt32(67324752);
            byteBuffer.WriteUInt16(256);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16((ushort)this.compressionMethod);
            byteBuffer.WriteUInt32(ZipArchiveFile.DateTimeToDosTime(this.lastWriteTime));
            byteBuffer.WriteUInt32(this.CheckSum);
            byteBuffer.WriteUInt32((uint)this.compressedLength);
            byteBuffer.WriteUInt32((uint)this.Length);
            byteBuffer.WriteUInt16((ushort)((int)bytes.Length));
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteContentsTo(writer);
            writer.Write(bytes, 0, (int)bytes.Length);
        }
Example #3
0
        internal void WriteArchiveDirectoryEntryToStream(Stream writer)
        {
            byte[]     bytes      = Encoding.UTF8.GetBytes(this.name);
            ByteBuffer byteBuffer = new ByteBuffer(46);

            byteBuffer.WriteUInt32(33639248);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16(256);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16((ushort)this.compressionMethod);
            byteBuffer.WriteUInt32(ZipArchiveFile.DateTimeToDosTime(this.lastWriteTime));
            byteBuffer.WriteUInt32(this.CheckSum);
            byteBuffer.WriteUInt32((uint)this.compressedLength);
            byteBuffer.WriteUInt32((uint)this.Length);
            byteBuffer.WriteUInt16((ushort)((int)bytes.Length));
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt16(0);
            byteBuffer.WriteUInt32(0);
            byteBuffer.WriteUInt32(this.headerOffset);
            byteBuffer.WriteContentsTo(writer);
            writer.Write(bytes, 0, (int)bytes.Length);
        }