【发布时间】:2020-12-30 09:21:59
【问题描述】:
从 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% 而不是以前的文件夹?
【问题讨论】:
标签: windows-10 temp appdata programdata