>將輸入流轉換為.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中文網其他相關文章!