带有DeleteOnClose文件选项的FileStream

在我的项目中,我必须在USB设备中创建一些临时文件,我想在Closing上删除它。 所以我使用了类似的代码

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

它工作正常。 但问题是我想再使用一个FileOption,比如No buffering。

 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); 

但它不会在关闭后删除文件。 请帮忙。

你需要使用| 代替 &。

这些是二进制标志,当你说&时,你有效地将它们全部掩盖,导致根本没有选项。

使用FileOptions.DeleteOnClose | FILE_FLAG_NO_B添加&取消它们。

FILE_FLAG_NO_BUFFERING&FileOptions.DeleteOnClose返回FileOptions.None

尝试在列表中包含WriteThrough标志,使用| 运营商。 有关使用FILE_FLAG_NO_BUFFERING的要求,请参阅此KB 。 有趣的是MS没有在枚举中包含这个标志。 WriteThrough在这种情况下不能满足您的需求吗? 您正在尝试编写安全数据?