从 Windows 10 开始,Storage Sense 允许用户指定%TEMP%
每天一次的文件夹清理频率。从技术上讲,它可以更频繁地运行设置为在低磁盘空间上激活,具体取决于一个人的磁盘使用模式。
鉴于此,%TEMP%
文件夹的意义何在?我将如何使用一个文件夹,在我完成编写后的那一刻,我放在那里的每个文件在技术上都可以被系统删除?
这是一个真实世界的场景,这让我很受打击(为简洁起见,代码被简化):
var ffmpegPath = Path.Combine(Path.GetTempPath(), "ffmpeg");
DownloadFfmpeg(path: ffmpegPath);
foreach (var videoFile in videoFiles) { //suppose there are dozens of files to process
DoSomeHeavyProcessing(ffmpegPath); //suppose each file takes an hour to process
}
这在最初的几个小时内效果很好,但是在某个任意时间点,下载的ffmpeg
文件夹被删除,并且所有后续文件都无法处理。事实上,如果我理解正确,理论上即使是这样的代码也可能会失败:
var path = Path.Combine(Path.GetTempPath(), "foo");
File.WriteAllText(path, "bar");
Console.WriteLine(File.ReadAllText(path));
现在,我知道如何解决这个问题了——只需使用%APPDATA%
,%LOCALAPPDATA%
或%PROGRAMDATA%
. 但这就是重点——自从 Storage Sense 出现以来,我为什么要使用%TEMP%
而不是以前的文件夹?