【发布时间】:2009-07-04 17:09:58
【问题描述】:
我已经看到 Windows 系统使用临时文件来提高某些任务的性能。当我查看这些文件时,它们被标记为 0x100 属性。我从 Microsoft 收到以下文本:“
通过将 CreateFile() 与 FILE_ATTRIBUTE_TEMPORARY 标志,你让 系统知道该文件是 很可能是短暂的。这 临时文件被正常创建 文件。系统需要做一个最小的 对文件的惰性写入量 系统保持磁盘结构 (目录等)一致。 这使得外观 文件已写入磁盘 。”
使用 Delphi 创建此类临时文件的任何示例?
谢谢。
[编辑]
补充问题:使用此类文件的上下文可能是什么,例如,它是否可以用于日志系统。日志是这个带有 temp 属性的文件吗?当日志变得非常大时,它会更快并且更容易减少内存吗?
[编辑]
好的,我已经使用下面 schnaader 提供的解决方案创建文件,并带有 FILE_ATTRIBUTE_TEMPORARY:
hMyFile := CreateFile(FileName,
GENERIC_WRITE,
0,
nil,
CREATE_ALWAYS,
FILE_ATTRIBUTE_TEMPORARY,
0);
此类文件在创建时获取 0x120 属性。因此根据系统的临时文件。
我还创建了一个带有 FILE_FLAG_DELETE_ON_CLOSE 标志 (see this article by L. Osterman) 的文件。
所以:
hMyFile := CreateFile(FileName,
GENERIC_WRITE,
0,
nil,
CREATE_ALWAYS,
FILE_FLAG_DELETE_ON_CLOSE,
0);
此文件没有属性,并且在应用程序关闭或销毁时自动删除该文件。
我没有找到如何组合属性和标志。任何的想法?
谢谢
【问题讨论】: