2

Base64 でエンコードされた文字列を WCF 経由で渡し、それらをファイルに書き込もうとしています。ただし、FileStream オブジェクトの Length が 0 より大きいにもかかわらず、ディスク上のファイルは空のままです。

FileStream fs = new FileStream(Config.Instance.SharedSettings.SaveDir + StudyInstance.StudyId + "\\tmp.ext", FileMode.Create);

EncodeBlock eb = new EncodeBlock();

while (eb.Part != eb.OfParts || eb.OfParts == 0)
{
    eb.ToDecode = ps.StudyService.GetInstancePart(StudyInstance, s, eb.Part+ 1, Config.Instance.ClientSettings.AppData);
    eb = Base64Encoder.Decode(eb);
    fs.Write(eb.ToEncode, 0, eb.ToEncode.Length);
}

fs.Close();

eb.ToEncodeの長さは常に 0 よりfs.Length大きく、常に 0 より大きく、"tmp.ext"ファイルは作成されますが空のままです。fs.CanWriteも常に真です。

4

1 に答える 1

8

FileStream.Flushを呼び出してみましたか?

ストリームを閉じる直前に呼び出します。

また、「using」ステートメントを使用して、ストリームがクリーンアップされていることを確認する必要があります。

于 2009-11-10T01:57:34.957 に答える