コード例 #1
0
        public static FAT_Item ReadFatItemFromData(Stream Data)
        {
            FAT_Item ch = new FAT_Item();

            // using (BinaryReader reader = new BinaryReader(Data, Encoding.ASCII))
            // {
            //     ch.Header_Start = reader.ReadInt32();
            //     ch.Data_Start   = reader.ReadInt32();
            //     ch.ff           = reader.ReadInt32();
            // }
            BinaryReader reader = new BinaryReader(Data, Encoding.ASCII);

            ch.Header_Start = reader.ReadInt32();
            ch.Data_Start   = reader.ReadInt32();
            ch.ff           = reader.ReadInt32();

            return(ch);
        }
コード例 #2
0
        public static MemoryStream WriteFatItemToStream(FAT_Item fi)
        {
            MemoryStream memoryStream = new MemoryStream();

            //using (BinaryWriter writer = new BinaryWriter(memoryStream, Encoding.ASCII))
            //{
            //    writer.Write(fi.Header_Start);
            //    writer.Write(fi.Data_Start);
            //    writer.Write(fi.ff);
            //}
            BinaryWriter writer = new BinaryWriter(memoryStream, Encoding.ASCII);

            writer.Write(fi.Header_Start);
            writer.Write(fi.Data_Start);
            writer.Write(fi.ff);

            return(memoryStream);
        }
コード例 #3
0
ファイル: V8Catalog.cs プロジェクト: fishca/MetaRead
        public void Flush()
        {
            FAT_Item fi = new FAT_Item();
            V8File   f;


            if (flushed)
            {
                return;
            }

            flushed = true;

            f = First;
            while (f != null)
            {
                f.Flush();
                f = f.Next;
            }

            if (Data != null)
            {
                if (is_fatmodified)
                {
                    MemoryStream fat = new MemoryStream();
                    fi.ff = (int)LAST_BLOCK2;
                    f     = First;
                    while (f != null)
                    {
                        fi.Header_Start = f.StartHeader;
                        fi.Data_Start   = f.StartData;
                        //fat.Write(fi, 0, 12); TODO: Подумать
                        f = f.Next;
                    }
                    WriteBlock(fat, CATALOG_HEADER_LEN2, true);
                    is_fatmodified = false;
                }

                if (is_emptymodified)
                {
                    Data.Seek(0, SeekOrigin.Begin);
                    // data.Write(start_empty, 0, 4); TODO: Подумать
                    is_emptymodified = false;
                }
                if (is_modified)
                {
                    version++;
                    Data.Seek(0, SeekOrigin.Begin);
                    // data.Write(version, 0, 4); TODO: Подумать
                }
            }

            if (File != null)
            {
                if (is_modified)
                {
                    File.IsDataModified = true;
                }
                File.Flush();
            }
            else
            {
                if (is_cfu)
                {
                    if (Data != null && CFu != null && is_modified)
                    {
                        Data.Seek(0, SeekOrigin.Begin);
                        CFu.Seek(0, SeekOrigin.Begin);

                        //ZDeflateStream(data, cfu);
                        // Deflate(data, out cfu); TODO: Додумать
                    }
                }
            }

            is_modified = false;
            flushed     = false;
        }