C#フローまとめ(ファイルフロー、メモリフロー、ネットワークフロー、BufferedStream、StreamReader/streamWriter、TextReader/TextWriter)

9915 ワード

一、ファイルフロー
FileStreamクラスは主にディスクファイルの読み書きに使用されます.ディスクにデータを格納したり、プロファイルを読み込んだりするのによく使用されます.
ファイルの読み込み:
//
FileStream fileStream = File.Open(@"D:\test.txt", FileMode.Open);// 
byte[] array = new byte[fileStream.Length];//
fileStream.Read(array, 0, array.Length);//
fileStream.Close(); // 
string str = Encoding.Default.GetString(array);// 
Response.Write(str);

書き込みファイル:
//
FileStream fileStream = File.Open(@"D:\test.txt",FileMode.Append);// 
byte[] array = Encoding.Default.GetBytes(" 123abc");// 
fileStream.Write(array, 0, array.Length);// 
fileStream.Close();// 

 
二、ネットワークフロー
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();

 
三、メモリフロー
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);// 

 
四、StreamReader/streamWriter
StreamReader/streamWriterは主にストリームデータを処理するために使用されます.これらは、それぞれ効率的なストリーム読み取り/書き込み機能を提供します.
読み込み:
//StreamReader  
StreamReader reader = new StreamReader(@"D:\test.txt",Encoding.Default);//
string readStr = reader.ReadLine();//   reader.ReadToEnd() 
reader.Close();// 

書き込み:
//StreamWriter  
StreamWriter writer = new StreamWriter(@"D:\test1.txt");// 
writer.WriteLine("Hi  123");// 
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.ストリーム内のデータをメモリにロードするときは、メモリオーバーフローなどの問題を考慮します.
 
記事の出所>>