1

我有一个由内存流支持的二进制写入器:

BinaryWriter m_binaryWriter = new BinaryWriter(new MemoryStream(BUFFER_SIZE));

我想获取基本阅读器并将其读入字节数组:

long DataLength = m_binaryWriter.BaseStream.Length;
byte[] MemoryStrData = new byte[DataLength];
int BytesRead = m_binaryWriter.BaseStream.Read(MemoryStrData, 0, (int)DataLength);

但是,BytesRead 始终为 0(显然 MemoryStrData 包含所有 0)。我尝试使用 BinaryReader 从基本流中读取流,但这导致了同样的事情。我在这里错过了什么吗?

4

2 回答 2

1

您是否一直都知道 BinaryWriter 将由 MemoryStream 支持?

如果是这样,要么保留对 MemoryStream 的引用,要么根据需要强制转换 BaseStream,然后用于MemoryStream.ToArray()获取 MemoryStream 内容的字节数组。

于 2013-12-10T02:09:10.807 回答
0

我解决了。BinaryWriter 的当前索引似乎与其后端流的位置不同!我认为获取基本流的句柄然后执行 .read(OutputArray,Index,Count) 就足够了,但是您需要对 BinaryWriter 本身进行搜索:

m_binaryWriter.Seek(0, SeekOrigin.Begin);
于 2013-12-10T19:12:48.753 回答