Ejemplo n.º 1
0
        /// <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);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }