在Windows上的C#中,是否有办法编写文件并将其标记为临时文件,以便操作系统不会在物理上将其写入磁盘?有问题的文件很小,在不久的将来会被另一个程序读取,并在此之后很快被删除和重写,因此将其保留在RAM中是有道理的。
我目前正在使用File.WriteAllText
编写文件,但如果需要,可以使用其他API。
答案 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属性确实告诉系统保持为 尽管如此可能在系统缓存中没有写入,因此可能 关注某些应用程序。