跨平台存储设置/缓存的方式

问题描述

| 我目前正在用C编写一个程序,该程序需要在磁盘上存储配置文件和各种缓存文件,以及一些永不更改且可以安全地为所有用户共享的静态数据文件。 我希望将这些文件以可移植的方式存储在操作系统的适当位置…… 例如,在GNU / Linux上:
$XDG_CONfig_HOME/<program_rame>/ -- for configuration files
$XDG_CACHE_HOME/<program_name>/ -- for cache files
$XDG_data_dirS/<program_name>/ -- for static files
而且,如果未设置这些参数,则可以使用推荐的认值(\“〜/ .config \”,\“〜/ .cache \”和\“ / usr / share \”)。 GNU / Linux是简单的一种。 但是,在Windows上,我不知道如何找到它们的等效项。我认为它将在AppData中某个位置,但是在哪里?而且,最重要的是,如何以编程方式获取此信息?以及其他操作系统(尤其是Mac OS,因为大多数其他UNIX也可以使用“ GNU / Linux \”方法)怎么办? 我愿意接受所有解决方案,无论它是否需要一个库。在此先感谢您的帮助 !     

解决方法

        Windows具有所谓的已知文件夹ID,以前(在Vista之前)称为特殊项目ID或CSIDL。例如,在
FOLDERID_LocalAppData
(即
%USERPROFILE%\\AppData\\Local
)引用的文件夹中可能就是您要查找的内容。我不在Windows上,因此我不知道这些值提供哪个C-API。但是,这些文件夹也有可能用作环境变量(例如
%LOCALAPPDATA%
)。