Свойство Position
Stream.Position можно читать и
писать, если
CanSeek
равен true. После
Read
и
Write
позиция сдвигается. Альтернатива -
Seek
с
SeekOrigin.
Синтаксис
long pos = stream.Position;
stream.Position = 0;
Пример
Давайте сбросим позицию в ноль перед чтением:
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[1];
ms.Read(buf, 0, 1);
long res = ms.Position;
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте перепрыгнем на байт 4 через
запись Position:
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 = 3;
byte[] buf = new byte[1];
ms.Read(buf, 0, 1);
int res = buf[0];
Console.WriteLine(res);
}
}
Результат выполнения кода:
4
Пример
Давайте сравним Position с
Length
после записи:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
ms.Write([1, 2, 3, 4, 5], 0, 5);
bool res = ms.Position == ms.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True