如何使用OS X API找到应用程序首选项文件夹?

时间:2014-07-14 14:13:17

标签: c++ macos osx-mavericks

我遇到了一个(过时的)代码片段,它使用文件管理器功能(包含在Carbon中)来查找共享应用程序首选项文件夹(在大多数情况下只是" / Library / Preferences")。它类似于:

#include <Carbon/Carbon.h>

...

FSSpec spec = { 0 };   // data type which specifies name and location of a file or folder
FSRef ref;             // data type which references in some sense a file or a folder      
OSErr err = fnfErr;

// find a 'preferences' type folder (specified by kPreferencesFolderType)        
// with the necessary permissions (specified by kUserDomain)
err = FindFolder(kUserDomain, ,
               1, &spec.vRefNum, &spec.parID);

// operate some conversions to put the folder path inside a string where you can 
// then append the app name to it.
FSpMakeFSRef(&spec, &ref);
FSRefMakePath(&ref, (UInt8*)filename, FL_PATH_MAX);

kUserDomainkPreferencesFolderType是在CarbonCore / Folders.h中定义的枚举值。)

不幸的是,许多&#34; FS&#34;文件管理器功能似乎已弃用,尤其是那些使用FSSpechttps://developer.apple.com/library/mac/documentation/Carbon/reference/File_Manager/Reference/reference.html)的功能。

因此我想知道:找到应用程序首选项文件夹的当前正确方法是什么(没有硬连接&#34; Library / Preferences / AppName&#34;到代码中)?感谢

1 个答案:

答案 0 :(得分:0)

我敢想象你想要使用NSSearchPathDirectory - 推测NSFileManager -URLsForDirectory:inDomains:的东西,可能是NSLibraryDirectory,你需要自己添加Preferences位。基于Apple公开的那些选项,我真的不认为你打算自己读取和写入这条路径 - 它只是针对用户默认值,暴露的NSApplicationSupportDirectory就是你要抛弃其他支持的地方数据