MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Определить размер файла, требуемый для сохранения списка объектов"
Answer 971129
Создайте свой класс, производный от Stream, который вместо записи данных будет считать их размер:
public class MyStream : Stream { int c = 0; public override bool CanRead => false; public override bool CanSeek => false; public override bool CanWrite => true; public override long Length => с; public override long Position { get => c; set => throw new NotSupportedException(); } public override void Flush() { return; } public override int Read(byte[] buffer, int offset, int count) { throw new NotSupportedException(); } public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException(); } public override void SetLength(long value) { throw new NotSupportedException(); } public override void Write(byte[] buffer, int offset, int count) { c += count; } }
Создайте для каждого метода перегрузку, которая будет писать те же данные, но не в файл, а в Stream:
public static void WriteTxtFile(List<Equipment> equipments, Stream s) { StreamWriter writer = new StreamWriter(s); equipments.ForEach(equipment => writer.WriteLine($"{equipment.Department};{equipment.Name};{equipment.Amount};{equipment.UnitCost};{equipment.TotalCost}")); writer.Flush(); }
Тогда размер данных вы сможете определить так:
MyStream s = new MyStream(); WriteTxtFile(eqlist, s); Console.WriteLine("Text file size: " + s.Position);
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.