代码之家  ›  专栏  ›  技术社区  ›  Anuraj

具有deleteonclose文件选项的文件流

  •  8
  • Anuraj  · 技术社区  · 16 年前

    在我的项目中,我必须在USB设备中创建一些临时文件,关闭时我想删除这些文件。所以我用了一个类似

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

    它很好用。但问题是我想再使用一个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);
    

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

    3 回复  |  直到 16 年前
        1
  •  9
  •   Lasse V. Karlsen    16 年前

    您需要使用而不是&。

    这些是二进制标志,当您说&时,您会有效地将它们全部屏蔽掉,从而导致根本没有任何选项。

        2
  •  2
  •   Yuriy Faktorovich    16 年前

    使用fileoptions.deleteonclose_file_flag_no_缓冲&取消它们。

    file_flag_no_buffering&fileoptions.deleteonclose返回fileoptions.none

        3
  •  0
  •   AnthonyWJones    16 年前

    尝试包括 WriteThrough 使用运算符在列表中也标记。看到这个 KB 关于使用文件\标志\无缓冲的要求。有趣的是,MS没有在枚举中包含此标志。有什么原因吗 写下 在这种情况下不做你需要的吗?您正在尝试写入安全数据?