创建新Stream和使用Write方法有什么区别?

时间:2016-09-16 23:21:40

标签: c# memorystream

我正在开发一个mp3流媒体应用程序,并在一个点上堆叠。有两个不同的代码部分可以阅读Stream并将其存储在MemoryStream中,但其中一个代码部分无法正常工作。

第一种方法:

do
{
  bytesRead = responseStream.Read(buffer, 0, buffer.Length);
  Buffer.BlockCopy(buffer, 0, bigBuffer, total, bytesRead);
  total += bytesRead;
  pos = ms.Position;
  ms = new MemoryStream(bigBuffer);
  ms.Position = pos;
  frame = Mp3Frame.LoadFromStream(ms);
}
while (bytesRead > 0)

第二种方法:

do
{
  bytesRead = responseStream.Read(buffer, 0, buffer.Length);
  total += bytesRead;
  pos = ms.Position;
  ms.Write(buffer, 0, bytesRead);
  ms.Position = pos;
  frame = Mp3Frame.LoadFromStream(ms);
}
while (bytesRead > 0)

在这些代码中,MemoryStream的位置会在处理或更改MemoryStream后再次存储和设置。但第二种方法并没有像我预期的那样工作。

关键点是new MemoryStream(byte[] array)MemoryStream.Write(array, 0, count)之间的差异。他们的工作不同吗?我以为他们是一样的。这个问题的原因是什么?

0 个答案:

没有答案
相关问题