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

0

私はそれを解決しました。BinaryWriter の現在のインデックスは、バックエンド ストリームの場所とは異なるようです! ベースストリームへのハンドルを取得してから .read(OutputArray,Index,Count) を実行するだけで十分だと考えましたが、BinaryWriter 自体でシークを実行する必要があります。

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