11

私のプロジェクトでは、USBデバイスにいくつかの一時ファイルを作成する必要があります。これはクロージング時に削除します。だから私は次のようなコードを使用しました

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose);

正常に動作します。しかし、問題は、バッファリングなしのように、もう1つFileOptionを使用したいということです。

private const FileOptions FILE_FLAG_NO_BUFFERING = (FileOptions)0x20000000;

this.fcommandHandler = new FileStream(TempFileName,
FileMode.CreateNew, FileAccess.ReadWrite,
FileShare.ReadWrite, 512, FileOptions.DeleteOnClose & FILE_FLAG_NO_BUFFERING);

ただし、閉じた後にファイルを削除することはありません。助けてください。

4

3 に答える 3

11

|の代わりに使用する必要があります&

これらはバイナリフラグであり、と言うと&、効果的にすべてをマスクして、オプションがまったくなくなります。

于 2009-09-18T12:29:34.870 に答える
4

それらをキャンセルして使用FileOptions.DeleteOnClose | FILE_FLAG_NO_BUFFERINGします。&

FILE_FLAG_NO_BUFFERING & FileOptions.DeleteOnClose戻り値FileOptions.None

于 2009-09-18T12:29:54.153 に答える
0

WriteThrough|を使用して、フラグもリストに含めてみてください。オペレーター。を使用するための要件については、このKBFILE_FLAG_NO_BUFFERINGを参照してください。MSがこのフラグを列挙型に含めていないのは興味深いことです。WriteThroughこのシナリオで必要なことを行わない理由はありますか?安全なデータを書き込もうとしていますか?

于 2009-09-18T12:46:31.140 に答える