5

StreamWriterへの書き込みに使用している次のコードがありますMemoryStream。ただし、ストリームを読み戻そうとすると、切り捨てられたデータが取得されます。

using(var outStream = new MemoryStream())
using (var outWriter = new StreamWriter(outStream))
{
    // my operation that's writing data to the stream

    var outReader = new StreamReader(outStream);
    outStream.Flush();
    outStream.Position = 0;
    return outReader.ReadToEnd();

}

これにより、ほとんどのデータが返されますが、最後近くで切り捨てられます。ただし、代わりにファイルに書き込もうとすると、MemoryStreamコンテンツ全体が取得されるため、データがストリームに到達していることはわかっています。たとえば、次のコードは内容全体をファイルに書き込みます。

using (var outWriter = new StreamWriter(@"C:\temp\test.out"))
{
    // my operation that's writing data to the stream
}
4

1 に答える 1

13

ライターをフラッシュしていません-outStreamフラッシュするものがないため、フラッシュは無意味です。あなたが持っている必要があります:

outWriter.Flush();

巻き戻す前に。後のコードは、データがストリームではなくライターに到達することを証明します。

または、最初から使用するだけです...これは、を作成し、後でテキストを書き込むためStringWriterのはるかに簡単な方法です。TextWriter

于 2013-06-07T15:21:04.180 に答える