Поделиться через


BufferedStream.Write Метод

Определение

Перегрузки

Write(ReadOnlySpan<Byte>)

Записывает последовательность байтов в текущий буферизованный поток и перемещает текущую позицию внутри буферизованного потока на число записанных байтов.

Write(Byte[], Int32, Int32)

Копирует байты в буферизованный поток и перемещает текущую позицию в буферизованном потоке вперед на количество записанных байтов.

Write(ReadOnlySpan<Byte>)

Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs

Записывает последовательность байтов в текущий буферизованный поток и перемещает текущую позицию внутри буферизованного потока на число записанных байтов.

public:
 override void Write(ReadOnlySpan<System::Byte> buffer);
public override void Write (ReadOnlySpan<byte> buffer);
override this.Write : ReadOnlySpan<byte> -> unit
Public Overrides Sub Write (buffer As ReadOnlySpan(Of Byte))

Параметры

buffer
ReadOnlySpan<Byte>

Область памяти. Этот метод копирует содержимое данной области в текущий буферизованный поток.

Комментарии

Используйте свойство , CanWrite чтобы определить, поддерживает ли текущий экземпляр запись. Используйте метод для WriteAsync асинхронной записи в текущий буферный поток.

Если операция записи выполнена успешно, позиция в буферизованном потоке увеличивается на количество записанных байтов. Если возникает исключение, позиция в буферизованном потоке остается неизменной.

Применяется к

Write(Byte[], Int32, Int32)

Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs
Исходный код:
BufferedStream.cs

Копирует байты в буферизованный поток и перемещает текущую позицию в буферизованном потоке вперед на количество записанных байтов.

public:
 override void Write(cli::array <System::Byte> ^ array, int offset, int count);
public:
 override void Write(cli::array <System::Byte> ^ buffer, int offset, int count);
public override void Write (byte[] array, int offset, int count);
public override void Write (byte[] buffer, int offset, int count);
override this.Write : byte[] * int * int -> unit
override this.Write : byte[] * int * int -> unit
Public Overrides Sub Write (array As Byte(), offset As Integer, count As Integer)
Public Overrides Sub Write (buffer As Byte(), offset As Integer, count As Integer)

Параметры

arraybuffer
Byte[]

Массив байтов, из которого необходимо скопировать count байтов в текущий буферизованный поток.

offset
Int32

Смещение в буфере, с которого необходимо начать копирование байтов в текущий буферизованный поток.

count
Int32

Количество байтов, которые необходимо записать в текущий буферизованный поток.

Исключения

Длина array минус offset меньше count.

array имеет значение null.

offset или count является отрицательным значением.

Поток закрыт или его значение равно null.

Поток не поддерживает запись.

Методы были вызваны после закрытия потока.

Примеры

Этот пример входит в состав более крупного примера использования класса BufferedStream.

// Send the data using the BufferedStream.
Console::WriteLine( "Sending data using BufferedStream." );
startTime = DateTime::Now;
for ( int i = 0; i < numberOfLoops; i++ )
{
   bufStream->Write( dataToSend, 0, dataToSend->Length );

}
bufStream->Flush();
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes sent in {1} seconds.\n", (numberOfLoops * dataToSend->Length).ToString(), bufferedTime.ToString(  "F1" ) );
// Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.");
startTime = DateTime.Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream.Write(dataToSend, 0, dataToSend.Length);
}
bufStream.Flush();
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes sent in {1} seconds.\n",
    numberOfLoops * dataToSend.Length,
    bufferedTime.ToString("F1"));
// Send the data using the BufferedStream.
printfn "Sending data using BufferedStream."
let startTime = DateTime.Now
for _ = 0 to numberOfLoops - 1 do
    bufStream.Write(dataToSend, 0, dataToSend.Length)
bufStream.Flush()
let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{numberOfLoops * dataToSend.Length} bytes sent in {bufferedTime:F1} seconds.\n"
' Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.")
startTime = DateTime.Now
For i As Integer = 1 To numberOfLoops
    bufStream.Write(dataToSend, 0, dataToSend.Length)
Next i

bufStream.Flush()
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
    numberOfLoops * dataToSend.Length, _
    bufferedTime.ToString("F1"))

См. также раздел

Применяется к