Класс Stream
System.IO.Stream - абстрактный класс:
данные идут байтами, позиция сдвигается
вперёд при чтении и записи. В примерах
используют MemoryStream в памяти;
FileStream - тот же Stream
поверх файла, его открывают через
File.Open.
Чтение -
Read,
запись -
Write.
У многих методов есть *Async.
Синтаксис
using System.IO;
Stream stream = new MemoryStream();
int n = stream.Read(buffer, offset, count);
stream.Write(buffer, offset, count);
Пример
Давайте запишем пять байт и прочитаем первые три:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
ms.Position = 0;
byte[] buf = new byte[3];
int res = ms.Read(buf, 0, 3);
Console.WriteLine(res);
}
}
Результат выполнения кода:
3
Пример
Давайте проверим длину потока после записи:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
long res = ms.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Пример
Давайте переливем данные в другой поток
через
CopyTo:
using System;
using System.IO;
class Program
{
static void Main()
{
using var src = new MemoryStream();
src.Write([1, 2, 3, 4, 5], 0, 5);
src.Position = 0;
using var dst = new MemoryStream();
src.CopyTo(dst);
long res = dst.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Смотрите также
-
метод
Read,
который читает байты из потока -
метод
Seek,
который меняет позицию -
SeekOrigin,
откуда считают смещение приSeek -
File.Open,
который открывает файловый поток