我有一个由内存流支持的二进制文件:
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从基本流中读取流,但这导致了同样的事情。我在这里错过了什么吗?
答案 0 :(得分:1)
您是否始终知道BinaryWriter将由MemoryStream支持?
如果是这样,要么保留对MemoryStream的引用,要么根据需要强制转换BaseStream,然后使用MemoryStream.ToArray()
获取MemoryStream内容的字节数组。
答案 1 :(得分:0)
我解决了。 BinaryWriter的当前索引似乎与它的后端流的位置不同!我认为获取基本流的句柄然后执行.read(OutputArray,Index,Count)就足够了,但是你需要对BinaryWriter本身进行搜索:
m_binaryWriter.Seek(0, SeekOrigin.Begin);