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); }
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); }
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; }