Stream.Read Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| Read(Span<Byte>) |
При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых. |
| Read(Byte[], Int32, Int32) |
При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых. |
Read(Span<Byte>)
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.
public:
virtual int Read(Span<System::Byte> buffer);
public virtual int Read(Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer
Параметры
Область памяти. При возвращении этого метода содержимое этого региона заменяется байтами, считываемыми из текущего источника.
Возвращаемое значение
Общее количество байтов, считываемых в буфер. Это может быть меньше размера буфера, если в данный момент не доступно много байтов или ноль (0), если длина буфера равна нулю или конец потока достигнута.
Комментарии
CanRead Используйте свойство, чтобы определить, поддерживает ли текущий экземпляр чтение. ReadAsync Используйте метод для асинхронного чтения из текущего потока.
Реализации этого метода считывают максимум buffer.Length байтов из текущего потока и хранят их в buffer. Текущая позиция в потоке расширена числом операций чтения байтов; Однако, если возникает исключение, текущая позиция в потоке остается неизменной. Реализации возвращают число операций чтения байтов. Если запрашивается более нулевых байтов, реализация не завершит операцию до тех пор, пока не будет прочитано по крайней мере один байт данных (если запрашивались ноль байтов, некоторые реализации могут аналогично не завершиться до тех пор, пока не будет доступен хотя бы один байт, но данные не будут использоваться из потока в таком случае).
Read возвращает значение 0, только если запрашивались ноль байтов или когда в потоке больше нет данных, и больше не ожидается (например, закрытый сокет или конец файла). Реализация может возвращать меньше байтов, чем запрошено, даже если конец потока не достигнут.
Используется BinaryReader для чтения примитивных типов данных.
Применяется к
Read(Byte[], Int32, Int32)
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
- Исходный код:
- Stream.cs
При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.
public:
abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read(byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Параметры
- buffer
- Byte[]
Массив байтов. При возврате этого метода буфер содержит указанный массив байтов со значениями между offset и (offset + count - 1), замененными байтами, считываемыми из текущего источника.
- offset
- Int32
Отсчитываемое от нуля смещение buffer байтов, с которого начинается хранение данных из текущего потока.
- count
- Int32
Максимальное число байтов для чтения из текущего потока.
Возвращаемое значение
Общее количество байтов, считываемых в буфер. Это может быть меньше, чем количество байтов, запрашиваемых, если количество байтов недоступно в данный момент, или ноль (0), если count равно 0 или конец потока достигнут.
Исключения
offset Сумма и count больше длины буфера.
buffer равно null.
offset или count отрицательный.
Возникает ошибка ввода-вывода.
Поток не поддерживает чтение.
Методы были вызваны после закрытия потока.
Примеры
В следующем примере показано, как считывать Read блок данных.
using System;
using System.IO;
public class Block
{
public static void Main()
{
Stream s = new MemoryStream();
for (int i = 0; i < 122; i++)
{
s.WriteByte((byte)i);
}
s.Position = 0;
// Now read s into a byte buffer with a little padding.
byte[] bytes = new byte[s.Length + 10];
int numBytesToRead = (int)s.Length;
int numBytesRead = 0;
do
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
numBytesRead += n;
numBytesToRead -= n;
} while (numBytesToRead > 0);
s.Close();
Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
}
}
Imports System.IO
Public Class Block
Public Shared Sub Main()
Dim s As Stream = New MemoryStream()
For i As Integer = 0 To 121
s.WriteByte(CType(i, Byte))
Next i
s.Position = 0
' Now read s into a byte buffer that is padded slightly.
Dim bytes(s.Length + 10) As Byte
Dim numBytesToRead As Integer = s.Length
Dim numBytesRead As Integer = 0
Dim n As Integer
Do
' Read may return anything from 0 to 10.
n = s.Read(bytes, numBytesRead, 10)
' The end of the file is reached.
numBytesRead += n
numBytesToRead -= n
Loop While numBytesToRead > 0
s.Close()
Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
End Sub
End Class
Комментарии
CanRead Используйте свойство, чтобы определить, поддерживает ли текущий экземпляр чтение. ReadAsync Используйте метод для асинхронного чтения из текущего потока.
Реализации этого метода считывают максимум count байтов из текущего потока и сохраняют их в buffer начале offset. Текущая позиция в потоке расширена числом операций чтения байтов; Однако, если возникает исключение, текущая позиция в потоке остается неизменной. Реализации возвращают число операций чтения байтов. Если запрашивается больше нуля байтов, реализация не завершит операцию до тех пор, пока не будет прочитано по крайней мере один байт данных (некоторые реализации могут аналогично не завершиться до тех пор, пока не будет доступен по крайней мере один байт, даже если запрашивается ноль байтов, но данные не будут использоваться из потока в таком случае).
Read возвращает значение 0, только если запрашивались ноль байтов или когда в потоке больше нет данных, и больше не ожидается (например, закрытый сокет или конец файла). Реализация может возвращать меньше байтов, чем запрошено, даже если конец потока не достигнут.
Используется BinaryReader для чтения примитивных типов данных.
См. также раздел
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл