Example #1
0
            /// <summary>
            /// Чтение чанка из файла
            /// </summary>
            /// <param name="f">Поток откуда читать</param>
            public override void Read(BinaryReader f, uint size)
            {
                Children.Clear();
                uint quota = 0;

                while (quota < size)
                {
                    Chunk c;

                    // Чтение данных
                    string    nm = f.ReadConstantString(7);
                    ChunkType ct = (ChunkType)f.ReadByte();
                    uint      sz = f.ReadUInt32();

                    // Создание чанка
                    if (ct == ChunkType.RawDataChunk)
                    {
                        c = new DataChunk(nm);
                    }
                    else if (ct == ChunkType.KeyValueChunk)
                    {
                        c = new KeyValueChunk(nm);
                    }
                    else
                    {
                        c = new ContainerChunk(nm);
                    }

                    // Читаем содержимое
                    c.Read(f, sz);

                    // Увеличиваем квоту
                    quota += 12 + c.Size;
                }
            }
Example #2
0
        /// <summary>
        /// Чтение файла
        /// </summary>
        /// <param name="path">Полный путь до файла</param>
        public ChunkedFile(string path)
        {
            BinaryReader f = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read));

            // Читаем основной чанк
            string name = f.ReadConstantString(7);

            f.BaseStream.Position++;
            uint sz = f.ReadUInt32();

            Root = new ContainerChunk(name);
            Root.Read(f, sz);

            f.Close();
        }
Example #3
0
        /// <summary>
        /// Чтение файла
        /// </summary>
        /// <param name="path">Полный путь до файла</param>
        public ChunkedFile(string path)
        {
            FileName = path;
            BinaryReader f = new BinaryReader(new MemoryStream(FileSystem.Read(path)));

            // Читаем основной чанк
            if (f.BaseStream.Length >= 12)
            {
                string name = f.ReadConstantString(7);
                f.BaseStream.Position++;
                uint sz = f.ReadUInt32();
                Root = new ContainerChunk(name);
                Root.Read(f, sz);
            }
            else
            {
                Root = new ContainerChunk("");
            }

            f.Close();
        }
Example #4
0
 /// <summary>
 /// Создание пустого файла
 /// </summary>
 public ChunkedFile()
 {
     Root = new ContainerChunk();
 }