void WriteStreams(Stream file) { BinaryWriter writer = new BinaryWriter(file); PackedDataHeader header = WriteHeader(writer); WriteStreams(writer); string runtime = data.Options.Runtime; writer.Write(runtime); writer.Write(runtime.Length); writer.Write(header.Start); }
ArrayList ReadStreams(Stream file) { BinaryReader reader = new BinaryReader(file); PackedDataHeader header = ReadHeader(reader); PackedDataTable table = header.DataTable; ArrayList result = new ArrayList(); int count = table.RowCount; for (int i = 0; i < count; i++) { byte[] data = ReadStream(reader, header.Start, table[i]); result.Add(data); } return(result); }
// private methods... PackedDataHeader ReadHeader(BinaryReader reader) { Stream baseStream = reader.BaseStream; int length = (int)baseStream.Length; baseStream.Seek(length - 4, SeekOrigin.Begin); int start = reader.ReadInt32(); baseStream.Seek(start, SeekOrigin.Begin); PackedDataHeader header = new PackedDataHeader(); header.Start = start; header.Read(reader); ReadOptions(reader); return(header); }
// private methods... PackedDataHeader WriteHeader(BinaryWriter writer) { Stream baseStream = writer.BaseStream; int headerStart = (int)baseStream.Length; baseStream.Seek(headerStart, SeekOrigin.Begin); PackedDataHeader header = new PackedDataHeader(); header.Start = headerStart; int count = data.StreamCount; for (int i = 0; i < count; i++) { PackedDataStream stream = data[i]; int length = stream.Data.Length; header.DataTable.AddRow(length); } header.Write(writer); WriteOptions(writer); return(header); }