在二进制写入器中访问基本内存流[用于读取]

时间:2013-12-10 01:12:35

标签: c# memorystream binarywriter

我有一个由内存流支持的二进制文件:

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从基本流中读取流,但这导致了同样的事情。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您是否始终知道BinaryWriter将由MemoryStream支持?

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

答案 1 :(得分:0)

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

m_binaryWriter.Seek(0, SeekOrigin.Begin);