Класс SeekOrigin
SeekOrigin передают в
Stream.Seek:
Begin - от начала потока,
Current - от текущей позиции,
End - от конца (смещение часто
отрицательное). Работает, если у потока
CanSeek
равен true.
Синтаксис
long pos = stream.Seek(offset, SeekOrigin.Begin);
long pos = stream.Seek(offset, SeekOrigin.Current);
long pos = stream.Seek(offset, SeekOrigin.End);
Пример
Давайте встанем на байт 3 от начала
через Begin:
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(2, SeekOrigin.Begin);
Console.WriteLine(res);
}
}
Результат выполнения кода:
2
Пример
Давайте сдвинемся на один байт вперёд от
текущей позиции через Current:
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(1, SeekOrigin.Begin);
long res = ms.Seek(1, SeekOrigin.Current);
Console.WriteLine(res);
}
}
Результат выполнения кода:
2
Пример
Давайте встанем на последний байт через
End со смещением -1:
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