c#输入流到字节数组:实用指南
> 在处理C#中的二进制数据时,将输入流转换为字节数组是一个常见的任务。 最好的方法取决于您是否知道流的大小。
已知的流大小:
>
BinaryReader.ReadBytes
<code class="language-csharp">using (BinaryReader br = new BinaryReader(s)) { byte[] b = br.ReadBytes((int)s.Length); }</code>
对于长度未知的流,必须使用更健壮的迭代方法:
此方法在将数据转换为字节数组之前读取块中的流,将数据累积。>
.net 4及以上:stream.copyto><code class="language-csharp">using (MemoryStream ms = new MemoryStream()) { byte[] buffer = new byte[16 * 1024]; // Adjust buffer size as needed int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } byte[] b = ms.ToArray(); }</code>.net 4及更高版本的版本使用
>:MemoryStream
提供了更高效,更简洁的解决方案
性能和资源管理:
请记住,块中的阅读会影响性能。 尝试不同的缓冲尺寸,以优化您的特定需求。 始终确保正确关闭流程以避免资源泄漏。Stream.CopyTo
以上是如何有效地将输入流转换为C#中的字节数组?的详细内容。更多信息请关注PHP中文网其他相关文章!