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