您必須將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