将文件标记为临时文件

时间:2017-05-29 18:21:27

标签: c# windows

在Windows上的C#中,是否有办法编写文件并将其标记为临时文件,以便操作系统不会在物理上将其写入磁盘?有问题的文件很小,在不久的将来会被另一个程序读取,并在此之后很快被删除和重写,因此将其保留在RAM中是有道理的。

我目前正在使用File.WriteAllText编写文件,但如果需要,可以使用其他API。

1 个答案:

答案 0 :(得分:1)

这很简单,可以在没有任何P / Invoke的情况下完成:

var file = File.Create(path);
File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Temporary);

FileAttributes.Temporary 枚举值与FILE_ATTRIBUTE_TEMPORARY常量(0x100)相同:

  

指定FILE_ATTRIBUTE_TEMPORARY属性会导致文件系统   如果有足够的高速缓存,则避免将数据写回大容量存储器   是可用的,因为应用程序删除后的临时文件   手柄已关闭。在这种情况下,系统可以完全避免写入   数据。虽然它不直接控制数据缓存   与前面提到的标志相同,   FILE_ATTRIBUTE_TEMPORARY属性确实告诉系统保持为   尽管如此可能在系统缓存中没有写入,因此可能   关注某些应用程序。

source