入力ストリームを.NETのバイト配列に変換する:比較分析
.NETは、入力ストリームをバイト配列に変換するいくつかの方法を提供します。 この記事では、一般的な方法を比較し、その長所と短所を強調しています。
最も単純なアプローチは、以下に示すようにを使用します:BinaryReader.ReadBytes
<code class="language-csharp">using (BinaryReader br = new BinaryReader(s)) { b = br.ReadBytes((int)s.Length); }</code>
)が事前に知られている場合に効率的です。ただし、これは必ずしもそうではありません。s.Length
を使用して、可変長のストリームを効果的に処理します:Stream.Read
<code class="language-csharp">public static byte[] ReadFully(Stream input) { byte[] buffer = new byte[16 * 1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } return ms.ToArray(); } }</code>
.NET 4.0以降のバージョンは、
:を使用して、より簡潔で効率的な代替品を提供します。
Stream.CopyTo
<code class="language-csharp">public static byte[] ReadFully(Stream input) { using (MemoryStream ms = new MemoryStream()) { input.CopyTo(ms); return ms.ToArray(); } }</code>
は、ストリームの長さがわかっている場合に適していますが、(どちらの実装でも)は、未知または可変の長さのストリームに対して信頼できるソリューションを提供します。
メソッドは、.NET 4.0以降で最も効率的で読みやすいオプションです。以上が.NETの入力ストリームをバイト配列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。