您必须将Stream对象中的所有数据读入byte[]
缓冲区,然后通过其构造函数将其传递到MemoryStream
。最好是更具体地说明你正在使用的流对象的类型。 Stream
是非常通用的,可能不会实现Length
属性,这在读取数据时非常有用。
下面是一些代码对你:
public MyClass(Stream inputStream) {
byte[] inputBuffer = new byte[inputStream.Length];
inputStream.Read(inputBuffer, 0, inputBuffer.Length);
_ms = new MemoryStream(inputBuffer);
}
如果Stream
对象没有实现Length
属性,你将必须实现这样的事情:
public MyClass(Stream inputStream) {
MemoryStream outputStream = new MemoryStream();
byte[] inputBuffer = new byte[65535];
int readAmount;
while((readAmount = inputStream.Read(inputBuffer, 0, inputBuffer.Length)) > 0)
outputStream.Write(inputBuffer, 0, readAmount);
_ms = outputStream;
}
一旦你有了Stream,为什么还要把它转换成MemoryStream呢?你不能直接使用Stream吗? – 2010-07-09 12:53:35
由于其他依赖性,我需要一个MemoryStream。 – fearofawhackplanet 2010-07-09 13:17:28