delphi - 如何创建临时文件(0x100)以加速应用程序

标签 delphi temporary-files

我发现Windows系统使用临时文件来提高某些任务的性能。当我查看这些文件时,它们被标记为 0x100 属性。我从 Microsoft 收到以下文本:“

By using CreateFile() with the FILE_ATTRIBUTE_TEMPORARY flag, you let the system know that the file is likely to be short lived. The temporary file is created as a normal file. The system needs to do a minimal amount of lazy writes to the file system to keep the disk structures (directories and so forth) consistent. This gives the appearance that the file has been written to the disk ."

有使用 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);

该文件没有属性,当应用程序关闭或销毁时,该文件会自动删除。

我没有找到如何组合属性和标志。任何想法?

谢谢

最佳答案

那么,使用 CreateFile() 方法怎么样?

var
  FileName : PChar;
  hMyFile : THandle;

...

hMyFile := CreateFile(FileName,
                      GENERIC_WRITE,
                      0,
                      nil,
                      CREATE_ALWAYS,
                      FILE_ATTRIBUTE_TEMPORARY,
                      0); 

if (hMyFile = INVALID_HANDLE_VALUE) then begin
  // Error
end;

...

CloseHandle(hMyFile);

要将标志与FILE_FLAG_DELETE_ON_CLOSE结合使用,请使用:

hMyFile := CreateFile(FileName,
                      GENERIC_WRITE,
                      0,
                      nil,
                      CREATE_ALWAYS,
                      FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE,
                      0); 

关于delphi - 如何创建临时文件(0x100)以加速应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082590/

相关文章:

Python:如何在我的测试套件中制作临时文件?

Delphi 7开启自动完成

multithreading - iTask - 将参数值传递给匿名过程

delphi - 从 Delphi 中的 "if"退出

delphi - 使用的 DCPcrypt 加密和哈希算法

c++ - 子类的类型

powershell - 在Powershell中解压缩不会清除临时文件

python-3.x - 为什么使用关键字 "with"调用 tempfile.TemporaryDirectory() 时,它的返回类型会发生变化?

python - 如何制作较小的临时文件?