Avatar ·

如何在C#中将流(Stream)转换为字节数组(byte[])?

大家好!我是一名初学C#的开发者,遇到了一个问题。我需要从流(Stream)中读取所有数据到字节数组(byte[])。流可能来自不同来源:文件、网络请求、MemoryStream等。 以下是我尝试编写的示例代码: ```csharp public byte[] ReadStream(Stream stream) { // 我知道Stream有Length属性,但它并不总是可用。 // 如何正确读取所有字节? byte[] buffer = new byte[stream.Length]; // 错误“Stream does not support seeking” stream.Read(buffer, 0, (int)stream.Length); return buffer; } ``` 问题在于,如果流不支持查找(seeking),`stream.Length`可能会抛出`NotSupportedException`异常。例如,在处理`NetworkStream`或`GZipStream`时,Length属性不可用。 此外,即使Length可用,我也不确定`Read()`方法能否在一次调用中读取所有数据。`Read()`方法返回的字节数可能少于请求的数量。 我正在寻找