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

編集の要約なし
1行目: 1行目:
[[Windows]]ではEnvironmentクラスのGetFolderPathメソッドを使うとデスクトップやマイドキュメント、システムディレクトリなどの特殊ディレクトリの絶対パスを取得することができる。
==概要==
[[MonoMac]]や[[Xamarin.Mac]]に限らずあらゆるアプリでは、何かしらの[[データ]]を保存したりする場合には特殊ディレクトリを取得して、そこを起点にすることが基本となると思われる。


同様のことを[[MonoMac]]および[[Xamarin.Mac]]で行う場合にはNSSearchPathクラスのGetDirectoriesメソッドを使う。
==実装:NSSearchPathクラスのGetDirectoriesメソッドを使う==
[[Windows]]ではEnvironmentクラスのGetFolderPathメソッドを使うとデスクトップやマイドキュメント、システムディレクトリなどの特殊ディレクトリの絶対パスを取得することができる。同様のことを[[MonoMac]]および[[Xamarin.Mac]]で行う場合にはNSSearchPathクラスのGetDirectoriesメソッドを使う。


ちなみにMonoMacでもEnvironmentクラスのGetFolderPathメソッドで色々と取得することもできる。マルチプラットフォームでの互換性を考慮すると、取得可能なフォルダであればEnvironmentクラスのGetFolderPathメソッドで取得しておいた方がいいかもしれない。
NSSearchPathクラスのGetDirectoriesメソッドを使いユーザーディレクトリ配下の「Application Support」ディレクトリ(~/Library/Application Support)を取得するには以下のような感じになる。
 
==方法1==
NSSearchPathクラスのGetDirectoriesメソッドを使い、ユーザーディレクトリ配下のApplication Supportディレクトリ(~/Library/Application Support)を取得するには以下のような感じになる。
<source lang="csharp">
<source lang="csharp">
                 var appSupportDir = NSSearchPath.GetDirectories(
                 var appSupportDir = NSSearchPath.GetDirectories(
15行目: 14行目:
NSSearchPathクラスのGetDirectoriesメソッドの[[戻り値]]は[[配列]]なので注意する必要がある。domainMask引数で取得範囲をユーザーディレクトリに限定しているので戻り値は1個しか返ってこないはずであり、[[LINQ]]でFirstOrDefaultしてしまうのが手っ取り早い。
NSSearchPathクラスのGetDirectoriesメソッドの[[戻り値]]は[[配列]]なので注意する必要がある。domainMask引数で取得範囲をユーザーディレクトリに限定しているので戻り値は1個しか返ってこないはずであり、[[LINQ]]でFirstOrDefaultしてしまうのが手っ取り早い。


===備考1===
===備考===
上記のApplication Supportディレクトリに[[データ]]を保存する場合はアプリごとにサブディレクトリを作って保存するのが望ましい。一部では企業名などでサブディレクトリを作っている事例も見かける。
上記のApplication Supportディレクトリに[[データ]]を保存する場合はアプリごとにサブディレクトリを作って保存するのが望ましい。一部では企業名などでサブディレクトリを作っている事例も見かける。


23行目: 22行目:
</source>
</source>


==方法2==
 
==実装:Environment.SpecialFolderを使う==
[[MonoMac]]や[[Xamarin.Mac]]でもEnvironmentクラスのGetFolderPathメソッドで色々と取得することもできる。
マルチプラットフォームでの互換性を考慮するとEnvironmentクラスのGetFolderPathメソッドで取得可能な特殊ディレクトリであればこちらを使いのがベストだと思われる。
 
[[.NET Framework]]では標準的なEnvironment.SpecialFolderを使った場合に取得できる値を列挙する。
[[.NET Framework]]では標準的なEnvironment.SpecialFolderを使った場合に取得できる値を列挙する。
2015年2月時点での値なので将来的に未対応のものを中心に値が追加される可能性はある。
以下は2015年2月時点での値なので将来的に未対応のものを中心に値が追加される可能性はある。
 
{|class="wikitable sortable"
{|class="wikitable sortable"
|+
|+