BufferedStream.Write 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
Write(ReadOnlySpan<Byte>) |
將位元組序列寫入至目前的緩衝資料流,並依寫入的位元組數將此緩衝資料流中目前位置往前移。 |
Write(Byte[], Int32, Int32) |
複製位元組至緩衝資料流,並依寫入的位元組數目將緩衝區資料流向前移到目前位置。 |
Write(ReadOnlySpan<Byte>)
將位元組序列寫入至目前的緩衝資料流,並依寫入的位元組數將此緩衝資料流中目前位置往前移。
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)
複製位元組至緩衝資料流,並依寫入的位元組數目將緩衝區資料流向前移到目前位置。
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"))