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

vol*_*vox 6 delphi temporary-files

我已经看到Windows系统使用临时文件来提高某些任务的性能.当我查看它们时,这些文件标有0x100属性.我收到了微软的以下文字:"

通过使用带有FILE_ATTRIBUTE_TEMPORARY标志的CreateFile(),您可以让系统知道该文件可能是短暂的.临时文件创建为普通文件.系统需要对文件系统进行最少量的延迟写入,以保持磁盘结构(目录等)的一致性.这给出了文件已写入磁盘的外观."

使用Delphi创建这样的临时文件的任何例子?

谢谢.

[编辑]

补充问题:可能是使用此类文件的上下文,例如,它可以用于日志系统.日志是这个文件的临时属性?当日志变得非常大时,它会更快,更少内存吗?

[编辑]

好的,我使用下面的schnaader给出的解决方案使用FILE_ATTRIBUTE_TEMPORARY创建文件:

hMyFile := CreateFile(FileName,
                      GENERIC_WRITE,
                      0,
                      nil,
                      CREATE_ALWAYS,
                      FILE_ATTRIBUTE_TEMPORARY,
                      0); 
Run Code Online (Sandbox Code Playgroud)

这样的文件在创建时获得0x120属性.因此根据系统的临时文件.

我还创建了一个带有FILE_FLAG_DELETE_ON_CLOSE标志的文件(请参阅L. Osterman撰写的这篇文章).

所以:

hMyFile := CreateFile(FileName,
                      GENERIC_WRITE,
                      0,
                      nil,
                      CREATE_ALWAYS,
                      FILE_FLAG_DELETE_ON_CLOSE,
                      0);
Run Code Online (Sandbox Code Playgroud)

此文件没有属性,并且在关闭或销毁应用程序时会自动删除该文件.

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

谢谢

sch*_*der 7

那么,使用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);
Run Code Online (Sandbox Code Playgroud)

要合并旗帜FILE_FLAG_DELETE_ON_CLOSE,请使用or:

hMyFile := CreateFile(FileName,
                      GENERIC_WRITE,
                      0,
                      nil,
                      CREATE_ALWAYS,
                      FILE_ATTRIBUTE_TEMPORARY or FILE_FLAG_DELETE_ON_CLOSE,
                      0); 
Run Code Online (Sandbox Code Playgroud)