使用FILE_ATTRIBUTE_TEMPORARY和FILE_FLAG_DELETE_ON_CLOSE

时间:2011-03-09 07:33:38

标签: c++ windows winapi file-io file

我在C ++应用程序中创建临时文件时使用了两个标志FILE_ATTRIBUTE_TEMPORARYFILE_FLAG_DELETE_ON_CLOSE。根据{{​​3}},不应该在磁盘上创建任何文件。但是在我的代码中,文件被创建并写入磁盘(即使是1 KB数据)。有人可以确认这些标志的确切功能,以及文件是否在磁盘上创建?

2 个答案:

答案 0 :(得分:10)

稍后在同一个链接中,有引用:

  

如果你超过可用内存,那么   内存管理器将刷新文件   数据到磁盘。这导致了   性能命中,但你的操作   会成功而不是失败。

将文件标记为临时文件会告诉系统它不会需要在磁盘上,但它也不会阻止它被放在那里。

答案 1 :(得分:7)

它只是说该文件永远不会刷新到磁盘。这意味着,虽然它存在于您的文件系统中,但它永远不会物理存储在您的硬盘驱动器上。文件系统将显示它,具有实际大小和所有。