「MonoMac/特殊ディレクトリのパスを取得する」の版間の差分

編集の要約なし
タグ: 新規リダイレクト
 
(5人の利用者による、間の8版が非表示)
1行目: 1行目:
[[Windows]]ではEnvironmentクラスのGetFolderPathメソッドを使うと、デスクトップやマイドキュメント、システムディレクトリなどの特殊ディレクトリの絶対パスを取得することができる。
#redirect [[Xamarin.Macで特殊ディレクトリのパスを取得する]]
同様のことを[[MonoMac]]で行う場合にはNSSearchPathクラスのGetDirectoriesメソッドを使う。
 
ちなみにMonoMacでもEnvironmentクラスのGetFolderPathメソッドで色々取得することもできる。
マルチプラットフォームでの互換性を考慮すると、可能であればEnvironmentクラスのGetFolderPathメソッドで取得できるものは取得しておいた方がいいかもしれない。
 
==方法1==
NSSearchPathクラスのGetDirectoriesメソッドを使い、ユーザーディレクトリ配下のApplication Supportディレクトリ(~/Library/Application Support)を取得するには以下のような感じになる。
<source lang="csharp">
                var appSupportDir = NSSearchPath.GetDirectories(
                    directory : NSSearchPathDirectory.ApplicationSupportDirectory,
                    domainMask: NSSearchPathDomain.User
                ).FirstOrDefault();
</source>
NSSearchPathクラスのGetDirectoriesメソッドの[[戻り値]]は[[配列]]なので注意する必要がある。domainMask引数で取得範囲をユーザーディレクトリに限定しているので戻り値は1個しか返ってこないはずであり、[[LINQ]]でFirstOrDefaultしてしまうのが手っ取り早い。
 
===備考1===
上記のApplication Supportディレクトリに[[データ]]を保存する場合はアプリごとにサブディレクトリを作って保存するのが望ましい。一部では企業名などでサブディレクトリを作っている事例も見かける。
 
アプリごとにサブディレクトリを作るのであれば、[[MonoMac]]のプロジェクトを作ると必ずある「Info.plist」の内容はNSBundleクラスで取得できるので、Preferencesディレクトリ風(NSUserDefaultsクラスで[[ググれ]])にBundle Identifierで区切ると良い感じかもしれない。
<source lang="csharp">
                var appDataDir = Path.Combine(appSupportDir, NSBundle.MainBundle.BundleIdentifier);
</source>
 
==関連項目==
 
==参考文献==
{{reflist}}
 
{{stub}}
 
[[category:MonoMac]]