/// <summary> /// Loads the file from the specified stream. /// </summary> /// <param name="stream">The stream to read from.</param> public override void Load(Stream stream) { BinaryReader reader = new BinaryReader(stream, Encoding.GetEncoding("EUC-KR")); BaseVersion = reader.ReadInt32(); CurrentVersion = reader.ReadInt32(); int fileSystemCount = reader.ReadInt32(); for (int i = 0; i < fileSystemCount; i++) { VirtualFileIndexSystem fileSystem = new VirtualFileIndexSystem(); fileSystem.FileName = reader.ReadShortString(); int offset = reader.ReadInt32(); long nextFileSystem = stream.Position; stream.Seek(offset, SeekOrigin.Begin); int fileCount = reader.ReadInt32(); int deleteCount = reader.ReadInt32(); int startOffset = reader.ReadInt32(); for (int j = 0; j < fileCount; j++) { VirtualFileIndexEntry file = new VirtualFileIndexEntry(); file.FilePath = reader.ReadShortString(); file.Offset = reader.ReadInt32(); file.Size = reader.ReadInt32(); file.BlockSize = reader.ReadInt32(); file.IsDeleted = reader.ReadBoolean(); file.IsCompressed = reader.ReadBoolean(); file.IsEncrypted = reader.ReadBoolean(); file.Version = reader.ReadInt32(); file.Checksum = reader.ReadInt32(); fileSystem.Files.Add(file); } FileSystems.Add(fileSystem); if (i < fileSystemCount - 1) { stream.Seek(nextFileSystem, SeekOrigin.Begin); } } }
/// <summary> /// Loads the file from the specified stream. /// </summary> /// <param name="stream">The stream to read from.</param> public override void Load(Stream stream) { BinaryReader reader = new BinaryReader(stream, Encoding.GetEncoding("EUC-KR")); BaseVersion = reader.ReadInt32(); CurrentVersion = reader.ReadInt32(); int fileSystemCount = reader.ReadInt32(); for (int i = 0; i < fileSystemCount; i++) { VirtualFileIndexSystem fileSystem = new VirtualFileIndexSystem(); fileSystem.FileName = reader.ReadShortString(); int offset = reader.ReadInt32(); long nextFileSystem = stream.Position; stream.Seek(offset, SeekOrigin.Begin); int fileCount = reader.ReadInt32(); /*int deleteCount = */reader.ReadInt32(); /*int startOffset = */reader.ReadInt32(); for (int j = 0; j < fileCount; j++) { VirtualFileIndexEntry file = new VirtualFileIndexEntry(); file.FilePath = reader.ReadShortString(); file.Offset = reader.ReadInt32(); file.Size = reader.ReadInt32(); file.BlockSize = reader.ReadInt32(); file.IsDeleted = reader.ReadBoolean(); file.IsCompressed = reader.ReadBoolean(); file.IsEncrypted = reader.ReadBoolean(); file.Version = reader.ReadInt32(); file.Checksum = reader.ReadInt32(); fileSystem.Files.Add(file); } FileSystems.Add(fileSystem); if (i < fileSystemCount - 1) { stream.Seek(nextFileSystem, SeekOrigin.Begin); } } }