サーチ…


ストリームの使用

ストリームは、データを転送するための低レベルの手段を提供するオブジェクトです。それら自体はデータコンテナとしては機能しません。

処理するデータは、バイト配列( byte [] )形式です。読み込みと書き込みの関数はすべてバイト指向WriteByte()例: WriteByte()

整数、文字列などを扱う関数はありません。これはストリームを非常に汎用的にしますが、テキストを転送したいだけの場合には扱いが簡単ではありません。ストリームは、大量のデータを処理する場合に特に役立ちます。

私たちは、異なるタイプのStreamを使用して、そこから書き込む/読み込む必要のある場所(つまりバッキングストア)を使用する必要があります。たとえば、ソースがファイルの場合、 FileStreamを使用する必要があります。

string filePath = @"c:\Users\exampleuser\Documents\userinputlog.txt";
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    // do stuff here...

    fs.Close();
}

同様に、バッキングストアがメモリの場合は、 MemoryStreamが使用されます。

// Read all bytes in from a file on the disk.
byte[] file = File.ReadAllBytes(“C:\\file.txt”);

// Create a memory stream from those bytes.
using (MemoryStream memory = new MemoryStream(file))
{
   // do stuff here...
}

同様に、 System.Net.Sockets.NetworkStreamはネットワークアクセスに使用されます。

すべてのストリームは、汎用クラスSystem.IO.Streamから派生しています。ストリームからデータを直接読み書きすることはできません。 .NET Frameworkには、ネイティブタイプと低レベルストリームインターフェイスを変換し、ストリームを送受信するヘルパクラス( StreamReaderStreamWriterBinaryReaderBinaryWriterなど)がBinaryWriterれています。

StreamReaderStreamWriterStreamReader 、ストリームの読み取りと書き込みを行うことができます。これらを閉じるときには注意が必要です。デフォルトでは、閉じられたストリームも閉じられ、それ以降の使用には使用できなくなります。このデフォルトの動作は、 bool leaveOpenパラメータを持ち、その値をtrue設定したコンストラクタを使用して変更できtrue

StreamWriter

FileStream fs = new FileStream("sample.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
string NextLine = "This is the appended line.";
sw.Write(NextLine);
sw.Close();
//fs.Close(); There is no need to close fs. Closing sw will also close the stream it contains.

StreamReader

using (var ms = new MemoryStream())
{
    StreamWriter sw = new StreamWriter(ms);
    sw.Write(123);
    //sw.Close();     This will close ms and when we try to use ms later it will cause an exception
    sw.Flush();     //You can send the remaining data to stream. Closing will do this automatically
    // We need to set the position to 0 in order to read 
    // from the beginning.
    ms.Position = 0;
    StreamReader sr = new StreamReader(ms);
    var myStr = sr.ReadToEnd();
    sr.Close();
    ms.Close();
}

授業以来StreamStreamReaderStreamWriter 、などを実装IDisposable我々は呼び出すことができ、インターフェースをDispose()これらのクラスのオブジェクトのメソッドを。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow