示例#1
0
            public ZarFileType(
                EndianBinaryReader er,
                ZarHeader header,
                int fileTypeIndex)
            {
                er.Position = header.FileTypesOffset + 16 * fileTypeIndex;

                this.FileCount      = er.ReadInt32();
                this.FileListOffset = er.ReadInt32();
                this.TypeNameOffset = er.ReadInt32();
                er.ReadInt32();

                /*er.Position = this.TypeNameOffset;
                 * this.TypeName = er.ReadStringNT(Encoding.UTF8);*/

                this.Files = new ZarSubfile[this.FileCount];
                for (var i = 0; i < this.FileCount; ++i)
                {
                    this.Files[i] = new ZarSubfile(er, header, this, i);
                }
            }
示例#2
0
            public ZarSubfile(
                EndianBinaryReader er,
                ZarHeader header,
                ZarFileType fileType,
                int fileInFileTypeIndex)
            {
                er.Position = fileType.FileListOffset + 4 * fileInFileTypeIndex;
                var fileIndex = er.ReadInt32();

                er.Position = header.FileMetadataOffset + 8 * fileIndex;
                var fileSize       = er.ReadInt32();
                var fileNameOffset = er.ReadInt32();

                er.Position   = fileNameOffset;
                this.FileName = er.ReadStringNT(Encoding.UTF8);

                er.Position = header.DataOffset + 4 * fileIndex;
                var fileOffset = er.ReadInt32();

                er.Position = fileOffset;
                this.Bytes  = er.ReadBytes(fileSize);
            }