4

次のコードがあります。

using (var fs = new FileStream(@"C:\dump.bin", FileMode.Create))
{
    income.CopyTo(fs);
}

incomeはディスクに保存する必要があるストリームです。問題は、最後の 8 バイトを無視して、それより前のすべてを保存することです。収入ストリームは読み取り専用、転送専用であるため、そのサイズを予測できず、巨大なファイルが送信されるため、すべてのストリームをメモリにロードしたくありません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

たぶん(またはおそらく)それを行うためのよりクリーンな方法がありますが、現時点で実用的であるため、私の頭に浮かぶ最初の考えは次のとおりです。

using (var fs = new FileStream(@"C:\dump.bin", FileMode.Create))
{
    income.CopyTo(fs);
    fs.SetLength(Math.Max(income.Length - 8, 0));
}

書き込まれた後のファイルの長さを設定します。

于 2016-08-01T04:23:31.743 に答える