gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:59:12 30 4
gpt4 key购买 nike

我发现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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com