Метод Seek
Stream.Seek(offset, origin)
возвращает новую позицию в байтах.
Точку отсчёта задаёт
SeekOrigin.
Работает, если
CanSeek
равен true. Альтернатива -
свойство
Position.
Синтаксис
long pos = stream.Seek(offset, SeekOrigin.Begin);
Пример
Давайте встанем на начало и прочитаем
байт 4:
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.Seek(3, SeekOrigin.Begin);
byte[] buf = new byte[1];
ms.Read(buf, 0, 1);
int res = buf[0];
Console.WriteLine(res);
}
}
Результат выполнения кода:
4
Пример
Давайте проверим возвращаемое значение
Seek:
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.Seek(0, SeekOrigin.Begin);
Console.WriteLine(res);
}
}
Результат выполнения кода:
0
Пример
Давайте перейдём к последнему байту через
SeekOrigin.End:
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.Seek(-1, SeekOrigin.End);
Console.WriteLine(res);
}
}
Результат выполнения кода:
4
Смотрите также
-
SeekOrigin,
перечисление точек отсчёта -
свойство
Position,
которое хранит текущую позицию -
метод
Read,
который читает с текущей позиции -
Stream,
класс, где объявленSeek