public FileStructure(string _filename, byte[] data) { Version = 0; Flags = 0; CompressionMode = FileCompressionMode.Uncompressed; ModificationTime = 0; ModificationDate = 0; CRC32 = (int)Cryptography.Crc32Algorithm.Compute(data); CompressedSize = -1; UncompressedSize = -1; FilenameLength = (short)_filename.Length; //TODO: Calculate this value, make sure alignment to 0x1000 ExtraLength = 0; Filename = _filename; Extra = new FileStructureExtraData(_filename, data); }
public FileStructure(Stream stream, CustomBinaryReader reader) { if ((stream.Position - 4) % 0x1000 != 0) { throw new Exception("File Data Section Alignment Error (Pre Read)"); } Version = reader.ReadInt16(); Flags = reader.ReadInt16(); CompressionMode = (FileCompressionMode)reader.ReadInt16(); ModificationTime = reader.ReadUInt16(); ModificationDate = reader.ReadUInt16(); CRC32 = reader.ReadInt32(); CompressedSize = reader.ReadInt32(); UncompressedSize = reader.ReadInt32(); FilenameLength = reader.ReadInt16(); ExtraLength = reader.ReadInt16(); Filename = reader.ReadString(FilenameLength); Extra = new FileStructureExtraData(stream, reader, ExtraLength); }