我应该在哪里保存与我的应用程序相关的数据?我应该在哪里保存配置文件?我应该在哪里保存临时文件?我应该在“文档”中进行吗? “应用程序数据”?等等...
将数据保存到磁盘的最佳实践是什么(我猜,特殊文件夹的最佳实践?!)?
ApplicationData:您的应用程序所需的所有内容作为“每个用户”数据,并且不属于其他类别。标准配置文件将放在此处。
CommonApplicationData:所有非“每用户”数据。
LocalApplicationData:每个用户的非漫游数据。例如,您想要确保仅存储在本机上的所有内容(例如机器激活码,通常还缓存/临时数据)。标准临时文件将放在此处。
MyDocuments:用户实际将其识别为“可识别的单个文档”的用户数据。
如果你不关心文件名,还可以使用 tempfile API 在
temp
目录中生成临时文件。您不应该手动执行此操作。例如,在 .NET 中,您可以使用 Path.GetTempFileName()
来实现此目的。
AppData应该是自动配置和配置文件,文档应该只是用户保存的文件。我会将在多个系统中有用的任何内容放在 AppData/Roaming 中,并将其他任何内容(特定于计算机)放在 AppData/Local 或 LocalLow 中。对于临时文件,请使用 Temp 目录。
一般来说,Windows 最佳实践是遵循适当的环境变量。您想要保留的配置数据应放在 %APPDATA% 中,临时文件应放在 %TEMP% 中。
这样做的优点是,如果 Windows 发生更改,不会造成严重破坏,并且尊重人们可能拥有的奇怪配置。
此外,我同意其他答案,即“文档”仅适用于用户创建的数据,并且只能在提示后使用。
此外,您应该使用 SHGetFolderPath 或 SHGetKnownFolderPath(在 Vista+ 中)来获取路径。这将为您提供当前系统上的正确位置,无论当前安装的版本或语言如何。切勿对您正在使用的任何路径进行硬编码。