Свойство CanSeek
Stream.CanSeek равен true у
MemoryStream и типичного
FileStream. У сетевого потока
обычно false - там нельзя
произвольно вызывать
Seek.
Точки отсчёта -
SeekOrigin.
Синтаксис
bool ok = stream.CanSeek;
Пример
Давайте проверим MemoryStream:
using System;
using System.IO;
class Program
{
static void Main()
{
using var ms = new MemoryStream();
bool res = ms.CanSeek;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте убедимся, что при CanSeek
работает 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);
bool can = ms.CanSeek;
long pos = can ? ms.Seek(2, SeekOrigin.Begin) : -1;
Console.WriteLine(pos);
}
}
Результат выполнения кода:
2
Пример
Давайте проверим CanSeek у потока
только для чтения из буфера:
using System;
using System.IO;
class Program
{
static void Main()
{
byte[] data = [1, 2, 3, 4, 5];
using var ms = new MemoryStream(data, writable: false);
bool res = ms.CanSeek;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
Seek,
который нужен приCanSeek -
свойство
Position,
которое меняют при поддержке поиска -
SeekOrigin,
откуда считают смещение -
Stream,
класс, где объявленоCanSeek