C# 将文件标记为临时文件

C# 将文件标记为临时文件,c#,windows,C#,Windows,在Windows上的C#中,有没有一种方法可以写入文件并将其标记为临时文件,这样操作系统就不会麻烦将其物理写入磁盘?所讨论的文件很小,在不久的将来会被另一个程序读取,然后很快被删除和重写,因此将其完全保存在RAM中是有意义的 我目前正在使用file.WriteAllText编写文件,但如果需要,可以使用不同的API。这很简单,无需任何p/Invoke即可完成: var file = File.Create(path); File.SetAttributes(path, File.GetAttri

在Windows上的C#中,有没有一种方法可以写入文件并将其标记为临时文件,这样操作系统就不会麻烦将其物理写入磁盘?所讨论的文件很小,在不久的将来会被另一个程序读取,然后很快被删除和重写,因此将其完全保存在RAM中是有意义的


我目前正在使用
file.WriteAllText
编写文件,但如果需要,可以使用不同的API。

这很简单,无需任何p/Invoke即可完成:

var file = File.Create(path);
File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Temporary);
FileAttributes.Temporary枚举值与文件属性临时常量(0x100)相同:

指定文件\u属性\u临时属性会导致文件系统 避免在缓存内存足够时将数据写回大容量存储器 是可用的,因为应用程序在 把手关上了。在这种情况下,系统完全可以避免写入 数据。虽然它不直接控制数据库中的数据缓存 与前面提到的标志一样 文件\u属性\u临时属性会告诉系统保持为 在系统缓存中尽可能多地不写入,因此可能 关注某些应用


请看一下
MemoryMappedFile
“将其完全保存在RAM中是有意义的”——为什么?您是否分析了您的应用程序并确定这是一个瓶颈?@IInspectable事实上与其说是速度,不如说是噪音-人耳足以确定硬盘抖动和冷却风扇旋转是这方面的“瓶颈”。(您无需提醒我现在每个人都应该在SSD上。)如果在创建文件时指定
文件\属性\临时
,这将强烈提示文件系统不要麻烦将其写入磁盘。不过,我不知道用C语言做这件事的最佳方法。@HarryJohnston:。如果只有
FileOptions
有一个
Temporary=256
成员,那么您可以在不调用
CreateFile
的情况下执行此操作,但设计者明智地选择不提供此选项。(如果您试图捏造它,
FileStream
构造函数会抱怨。)