C#ストリームまとめ(Stream)
8138 ワード
この記事では、C#プログラミングでよく使われるストリームを簡単にまとめました.例えば、FileStream、MemoryStream、BufferedStream、NetWorkStream、StreamReader/streamWriter、TextReader/TextWriterなどの簡単な使い方です.
内容
1 FileStreamクラス
FileStreamクラスは、主にディスク上のファイルを読み込むか、ディスクファイルに情報を書き込むために使用されます.プログラム内のデータの一部をディスクに格納したり、プロファイル内のコンテンツを読み出したりする必要がある場合があります.ここではクラスを使用します.
ディスク上のファイルからコンテンツを読み込みます.
ディスクファイルにデータを書き込みます.
二 MemoryStreamクラス
MemoryStreamクラスは、主にメモリ内のデータを操作するために使用されます.例えば、ネットワーク内でデータを転送する際にストリームの形式を用いることができ、これらのストリームデータを受信すると、MemoryStreamクラスを宣言して格納し、処理することができる.
MemoryStreamアクション文字列:
三 BufferedStreamクラス
BufferedStreamクラスは主にストリームデータを処理するために使用されますが、このクラスの主な機能は他のストリームクラスをカプセル化するために使用されます.なぜ他のストリームクラスをカプセル化するのか、その意味は何ですか?マイクロソフトによると、主に一部のストリームがストレージデバイスを直接操作する時間を減らす.一部のストリームでは、直接ディスクにデータを格納する効率は高くありません.BufferedStreamでパッケージされたストリームは、メモリに統一された処理を行ってからディスクにデータを書き込むと、書き込みの効率が向上します.
ディスク上のファイルをディスク上の別のファイルに書き込みます.
実際の試験では,ストリームをカプセル化する方法は効率的にあまり向上しなかった.他のストリームを使用してファイルストリームをカプセル化することもできます.頻繁にディスクを読み取ることを保証するには、コードがそうしなければよいので、コードに制御を加えることで、プログラムがディスクを頻繁に操作しないことを保証することができます.
4 NetWorkStreamクラス
NetWorkStreamクラスは、サーバとクライアントの通信を処理するためのストリームです.ネットワークプログラミングでよく使用され、主にSocket、TcpClient、TcpListenerのようなクラスで得られるストリームを処理するために使用されます.
簡単なTCP同期方式サーバーとクライアント通信:
五 StreamReader/streamWriterクラス
StreamReader/streamWriterは主にストリームデータを処理するために使用されます.これらは、それぞれ効率的なストリーム読み取り/書き込み機能を提供します.
読み込みと書き込み:
六 TextReader/TextWriterクラス
TextReader/TextWriterクラスは主にストリームデータの処理に用いられる.これらは、それぞれ効率的なテキストストリームの読み取り/書き込み機能を提供します.
読み込みと書き込み:
注意事項:
1.ストリームを使用した後、閉じる必要があります.
2.ストリーム内のデータをメモリにロードするときは、メモリオーバーフローなどの問題を考慮します.
内容
1 FileStreamクラス
FileStreamクラスは、主にディスク上のファイルを読み込むか、ディスクファイルに情報を書き込むために使用されます.プログラム内のデータの一部をディスクに格納したり、プロファイル内のコンテンツを読み出したりする必要がある場合があります.ここではクラスを使用します.
ディスク上のファイルからコンテンツを読み込みます.
FileStream file = File.Open(@"F:\file.txt", FileMode.Open); //
byte[] array = new byte[file.Length];//
file.Read(array, 0, array.Length);//
file.Close();//
string str = Encoding.Default.GetString(array);//
Console.WriteLine(str);
ディスクファイルにデータを書き込みます.
FileStream file = File.Open(@"F:\file.txt", FileMode.Append);//
byte[] array = Encoding.UTF8.GetBytes("Hello World! ");//
file.Write(array, 0, array.Length);//
file.Close();//
二 MemoryStreamクラス
MemoryStreamクラスは、主にメモリ内のデータを操作するために使用されます.例えば、ネットワーク内でデータを転送する際にストリームの形式を用いることができ、これらのストリームデータを受信すると、MemoryStreamクラスを宣言して格納し、処理することができる.
MemoryStreamアクション文字列:
string str = "Hi! !";
byte[] array = Encoding.UTF8.GetBytes(str);//
MemoryStream memory = new MemoryStream(array);// MemoryStream
byte[] arrayNew = memory.ToArray();//
string strNew = Encoding.UTF8.GetString(arrayNew);//
三 BufferedStreamクラス
BufferedStreamクラスは主にストリームデータを処理するために使用されますが、このクラスの主な機能は他のストリームクラスをカプセル化するために使用されます.なぜ他のストリームクラスをカプセル化するのか、その意味は何ですか?マイクロソフトによると、主に一部のストリームがストレージデバイスを直接操作する時間を減らす.一部のストリームでは、直接ディスクにデータを格納する効率は高くありません.BufferedStreamでパッケージされたストリームは、メモリに統一された処理を行ってからディスクにデータを書き込むと、書き込みの効率が向上します.
ディスク上のファイルをディスク上の別のファイルに書き込みます.
BufferedStream
FileStream file1 = File.Open(@"F:\file1.txt", FileMode.OpenOrCreate,FileAccess.Read);//
FileStream file 2= File.Open(@"F:\file2.txt", FileMode.OpenOrCreate,FileAccess.Write);//
byte[] array = new byte[4096];
BufferedStream bufferedInput = new BufferedStream(file1);//
BufferedStream bufferedOutput = new BufferedStream(file2);//
bufferedInput.Read(array, 0, array.Length);
bufferedOutput.Write(array, 0, array.Length);
int bytesRead = 0;
while ((bytesRead = bufferedInput.Read(array, 0, 4096)) > 0)//
{
bufferedOutput.Write(array, 0, bytesRead);
Console.WriteLine(bytesRead);
}
bufferedInput.Close();//
bufferedOutput.Close();
file1.Close();
file2.Close();
実際の試験では,ストリームをカプセル化する方法は効率的にあまり向上しなかった.他のストリームを使用してファイルストリームをカプセル化することもできます.頻繁にディスクを読み取ることを保証するには、コードがそうしなければよいので、コードに制御を加えることで、プログラムがディスクを頻繁に操作しないことを保証することができます.
4 NetWorkStreamクラス
NetWorkStreamクラスは、サーバとクライアントの通信を処理するためのストリームです.ネットワークプログラミングでよく使用され、主にSocket、TcpClient、TcpListenerのようなクラスで得られるストリームを処理するために使用されます.
簡単なTCP同期方式サーバーとクライアント通信:
TcpListener lis=new TcpListener(5000); //
lis.Start();//
Socket sock=lis.AcceptSocket();// ,
NetworkStream networkStream = new NetworkStream(sock);// Socket
if (netStream.DataAvailable) //
{
byte[] data = new byte[1024]; // ,
int len = netStream.Read(data, 0, data.Length); // ,
string line = Encoding.Default.GetString(data, 0, len); //
}
TcpClient client = new TcpClient();// tcp
client.Connect("127.0.0.1", 5000);//
NetworkStream myStream = client.GetStream();//
byte[] data = Encoding.Default.GetBytes("Hi, "); //
myStream .Write(data, 0, data.Length); // myStream
myStream .Flush(); //
myStream .Close();
五 StreamReader/streamWriterクラス
StreamReader/streamWriterは主にストリームデータを処理するために使用されます.これらは、それぞれ効率的なストリーム読み取り/書き込み機能を提供します.
読み込みと書き込み:
StreamReader/Writer
StreamReader reader = new StreamReader("filePath");//
StreamWriter writer = new StreamWriter("filePath");//
string readStr=reader.ReadLine();//
string readAff = reader.ReadToEnd();//
writer.Write("Hi ");//
writer.WriteLine("Hi ");//
reader.Close();//
writer.Close();
六 TextReader/TextWriterクラス
TextReader/TextWriterクラスは主にストリームデータの処理に用いられる.これらは、それぞれ効率的なテキストストリームの読み取り/書き込み機能を提供します.
読み込みと書き込み:
TextReader/Writer
TextReader textReader = new StringReader("Hi ");//
TextWriter textWriter = new StringWriter();//
char[] c=new char[4096];
int chars = 0;
while ((chars = textReader.Read(c, 0, 4096)) > 0)//
{
textWriter.Write(c, 0, 4096);//
}
string str= textWriter.ToString();//
textReader.Close();//
textWriter.Close();
注意事項:
1.ストリームを使用した後、閉じる必要があります.
2.ストリーム内のデータをメモリにロードするときは、メモリオーバーフローなどの問題を考慮します.