Share via


BufferedStream.Write メソッド

バッファ ストリームにバイトをコピーし、書き込んだバイト数だけバッファ ストリームの現在位置を進めます。

Overrides Public Sub Write( _
   ByVal array() As Byte, _   ByVal offset As Integer, _   ByVal count As Integer _)
[C#]
public override void Write(byte[] array,intoffset,intcount);
[C++]
public: void Write(unsigned chararray __gc[],intoffset,intcount);
[JScript]
public override function Write(
   array : Byte[],offset : int,count : int);

パラメータ

  • array
    現在のバッファ ストリームに対する count バイトのコピー元のバイト配列。
  • offset
    現在のバッファ ストリームへのバイトのコピーを開始する位置のバッファのオフセット。
  • count
    現在のバッファ ストリームに書き込むバイト数。

例外

例外の種類 条件
ArgumentException array 長から offset を引いた値が count 未満です。
ArgumentNullException array が null 参照 (Visual Basic では Nothing) です。
ArgumentOutOfRangeException offset または count が負の値です。
IOException ストリームが閉じているか、 null 参照 (Visual Basic では Nothing) です。
NotSupportedException ストリームが書き込みをサポートしません。
ObjectDisposedException ストリームが閉じられた後でメソッドが呼び出されました。

解説

ファイルの作成およびテキストのファイルへの書き込みの例については、「 ファイルへのテキストの書き込み 」を参照してください。ファイルからのテキストの読み取りの例については、「 ファイルからのテキストの読み取り 」を参照してください。バイナリ ファイルの読み取りおよび書き込みの例については、「 新しく作成したデータ ファイルの読み取りと書き込み 」を参照してください。

実装時の注意: Stream に対する既定の実装は、新しい 1 バイト配列を作成してから Write を呼び出します。このメソッドは正式には正しいのですが、効率的ではありません。内部バッファを備えたストリームは、このメソッドをオーバーライドし、直接バッファを読み込むはるかに効率的なバージョンを提供します。これにより、呼び出しのたびに不要な配列割り当てが行われるのを避けることができます。

使用例

[Visual Basic, C#, C++] 次のコード例は BufferedStream クラスの例の一部です。

 
' 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"))

[C#] 
// 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"));

[C++] 
// Send the data using the BufferedStream.
Console::WriteLine(S"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(S"{0} bytes sent in {1} seconds.\n",
    (numberOfLoops * dataToSend->Length).ToString(), 
    bufferedTime.ToString("F1"));

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

BufferedStream クラス | BufferedStream メンバ | System.IO 名前空間 | CanWrite | Read | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み