オリジナルます。https://www.cnblogs.com/JimmyZheng/archive/2012/04/14/2446507.html
ブリーフのMemoryStream
、システムメモリへの読み取りおよび書き込み操作を提供するためのMemoryStreamメモリストリーム符号なしバイトのアレイによってMemoryStreamをので、性能のMemoryStreamといえます
比較的良好な、それは同時に、作業間のデータ交換の他のストリームの数を取るので、一時的なバッファと一時ファイル内のアプリケーションの必要性減少し、実際のMemoryStreamを
FileStreamを同じように重要である、多くの場面で我々はパフォーマンスを向上させるためにそれを使用する必要があります
違いのMemoryStreamとFileStream
また、主に非常に異なるドキュメント、操作の比較的高いレベルが、MemoryStreamを一連の、以前のFileStream操作を述べ、そのように、下層のメモリ動作に対してより傾斜しています
より高い速度とパフォーマンスを実現するだけでなく、彼らの基本的な違いは、何度も、することができますMemoryStreamを、実際に読み書きする必要があるファイルを操作し、最終的に適切なのFileStreamに置かれ、
また、このように操作もアクセス速度のMemoryStreamを増加させるためのXmlWriterの使用を必要とします
MemoryStreamをコンストラクタ
MemoryStream()
MemoryStreamを設定は、パラメータを可能にしません
MS = MemoryStreamを新しい新しいのMemoryStream(); // メモリストリームを作成します
MemoryStream(バイト[] バイト)
特定のバイト配列データを含むバイト配列、この構造は非常に重要であり、初心者やないプログラマーの多くを使用すると、この構造を無視しますバックのMemoryStream内のデータを読み取りまたは書き込み中に発見につながりました
この方法の多くは、すでに値のMemoryStreamを返すため何バイトのデータは、非常に落ち込んにつながりません、我々は、ライン上の次に注意を払う、そして時にはこれを必要としないかもしれません
MSはMemoryStreamを= 新しい新規のMemoryStream(バッファ); // メモリーのバイトの暗号化データ・ストリーム
MemoryStream(int型の容量)
これが最も重要であり、なぜあなたは言うのですか?この記事で私はあなたがMemoryStreamを追加スループット(バイト)を向上させたい、とだけint.Maxまでです一定のスループットを向上させるために、この方法に頼ることができれば、この方法でもあり、また前述のOutOfMemory例外について話し合います実行可能なプログラムを解決するためのOutOfMemory
MemoryStream(バイト[]バイト、ブール書き込み可能)
書き込み可能なパラメータは、ストリームを書き込むことができるかどうかを定義します
MemoryStream(バイト[]バイト、int型のインデックス、int型の数)
インデックスパラメータからインデックスインデックスは、バイト配列を定義し、
Countパラメータは、取得したデータの量の数であります
MemoryStream(バイト[]バイト、int型のインデックス、int型の数、書き込み可能なブール値、ブール値publiclyVisible)
次のメソッドを心配しないで、それ以外の場合はfalseを返し、(あなたはそれが困難を理解することができます。publiclyVisibleパラメータは、アレイからの流れを作成する、符号なしバイト配列を返し、真の有効GetBufferメソッドを表し、
私はこのようなものについて長々と話します)
MemoryStreamをする方法
オーバーライドされるメソッドが、ここでは繰り返さないために、あなたは私が書いた最初の記事を参照することができます
以下は、ユニークな方法であり、MemoryStreamを
仮想バイト[] GetBuffer()
このメソッドは、このメソッドは、符号なしバイト配列を返すので、私は、このような「HellowWorldは、」我々は唯一のライン11上のデータを返すようにしたいなどの数文字を入力した場合でも、即ち、使用する際には注意が必要です
あなたは、このメソッドを有効にする場合はしかし、このアプローチは、割り当てられたが、データの未使用バイトが実際にそれを返してきたものを含め、全体のバッファのデータは、あなたが上記の最後のコンフィギュレーションを使用しなければならないということであるだろう
コンストラクタ、publiclyVisibleプロパティがライン上でtrueに設定され、これのどこにもコンストラクタ上記の役割
仮想ボイドのwriteTo(ストリームstream)
この資料の冒頭にパフォーマンスの問題を議論するときに、このアプローチの目的は、既に指摘された、MemoryStreamを一般的には、ストリームの途中として機能し、
そのため、他の書き込み流れを処理した後読み書きメモリ
バイト[]バッファ。 DESCryptoServiceProvider DesCSP = 新しいDESCryptoServiceProvider(); /// <要約> /// DES加密 /// </要約> /// <PARAM NAME = "差出人"> </ param>の /// <PARAM NAME = "E"> </ param>の プライベート のボイド button2_Click(オブジェクト送信者、のEventArgs電子) { MemoryStreamをミリ秒 = 新規のMemoryStream()。// 先创建一个内存流 CryptoStream cryStream = 新しい CryptoStream(MS、DesCSP.CreateEncryptor()、CryptoStreamMode.Write)。//メモリに暗号化されたストリームを変換すると、ストリーム のStreamWriter SW = 新しい新しいのStreamWriter(cryStream); sw.WriteLine(textBox1.Text); // 暗号化された転流が書いた文字列暗号化する ()sw.Close; cryStream.Closeを(); バッファ = ms.ToArray(); // 暗号化されたバイト配列にストリーム textBox3.Text = Convert.ToBase64String(バッファ); //は、暗号化された文字列にバイト配列に変換 } /// <まとめ> /// DESの解読 /// </要約> /// <PARAM NAME = "SENDER"> </ param>の /// <PARAM NAME = "E"> </ param>の プライベート 無効をbutton3_Click(オブジェクト送信者のEventArgs E) { MemoryStreamをMS = 新しい新規のMemoryStream(緩衝液); // メモリーのバイトの暗号化データをストリーム = CryptoStream cryStream 新しい新しい CryptoStream(MS、DesCSP.CreateDecryptor()、CryptoStreamMode.Readを); // ストリームメモリストリームを解読する のStreamReaderのSR = 新しい新; StreamReaderを(cryStream) textBox1.Text = sr.ReadLineを(); // 復号化されたストリームの文字列が読み出さ sr.Close(); cryStream.Close(); MSを。クローズ(); }