メインメニューを開く

差分

MonoMac/特殊ディレクトリのパスを取得する

1,982 バイト追加, 2015年2月5日 (木) 09:04
ページの作成:「WindowsではEnvironmentクラスのGetFolderPathメソッドを使うと、デスクトップやマイドキュメント、システムディレクトリなどの特殊...」
WindowsではEnvironmentクラスのGetFolderPathメソッドを使うと、デスクトップやマイドキュメント、システムディレクトリなどの特殊ディレクトリの絶対パスを取得することができる。
同様のことをMonoMacで行う場合にはNSSearchPathクラスのGetDirectoriesメソッドを使う。

==方法1==
ユーザーディレクトリ配下の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]]
匿名利用者