我正在开发一个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)
之间的差异。他们的工作不同吗?我以为他们是一样的。这个问题的原因是什么?