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

提供: MonoBook
ナビゲーションに移動 検索に移動
22行目: 22行目:
 
                 var appDataDir = System.IO.Path.Combine(appSupportDir, NSBundle.MainBundle.BundleIdentifier);
 
                 var appDataDir = System.IO.Path.Combine(appSupportDir, NSBundle.MainBundle.BundleIdentifier);
 
</source>
 
</source>
 +
 +
==方法2==
 +
[[.NET Framework]]では標準的なEnvironment.SpecialFolderを使った場合に取得できる値を列挙する。
 +
2015年2月時点での値なので将来的に未対応のものを中心に値が追加される可能性はある。
 +
 +
{|class="wikitable sortable"
 +
|+
 +
! Environment.SpecialFolder列挙体 !! Environment.GetFolderPathの戻り値
 +
|-
 +
| AdminTools || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| ApplicationData || /Users/monobook/.config
 +
|-
 +
| CDBurning || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonAdminTools || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonApplicationData || /usr/share
 +
|-
 +
| CommonDesktopDirectory || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonDocuments || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonMusic || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonOemLinks || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonPictures || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonProgramFiles || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonProgramFilesX86 || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonPrograms || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonStartMenu || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonStartup || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| CommonTemplates || /usr/share/templates
 +
|-
 +
| CommonVideos || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Cookies || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Desktop || /Users/monobook/Desktop
 +
|-
 +
| DesktopDirectory || /Users/monobook/Desktop
 +
|-
 +
| Favorites || /Users/monobook/Library/Favorites
 +
|-
 +
| Fonts || /Users/monobook/Library/Fonts
 +
|-
 +
| History || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| InternetCache || /Users/monobook/Library/Caches
 +
|-
 +
| LocalApplicationData || /Users/monobook/.local/share
 +
|-
 +
| LocalizedResources || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| MyComputer || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| MyDocuments || /Users/monobook
 +
|-
 +
| MyMusic || /Users/monobook/Music
 +
|-
 +
| MyPictures || /Users/monobook/Pictures
 +
|-
 +
| MyVideos || /Users/monobook/Videos
 +
|-
 +
| NetworkShortcuts || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| PrinterShortcuts || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| ProgramFiles || /Applications
 +
|-
 +
| ProgramFilesX86 || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Programs || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Recent || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Resources || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| SendTo || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| StartMenu || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Startup || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| System || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| SystemX86 || style="color:gray" | 未対応、空文字が返ってくる
 +
|-
 +
| Templates || /Users/monobook/Templates
 +
|-
 +
| UserProfile || /Users/monobook
 +
|-
 +
| Windows || style="color:gray" | 未対応、空文字が返ってくる
 +
|}
  
 
==関連項目==
 
==関連項目==

2015年2月27日 (金) 01:55時点における版

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

ちなみにMonoMacでもEnvironmentクラスのGetFolderPathメソッドで色々取得することもできる。 マルチプラットフォームでの互換性を考慮すると、可能であればEnvironmentクラスのGetFolderPathメソッドで取得できるものは取得しておいた方がいいかもしれない。

方法1

NSSearchPathクラスのGetDirectoriesメソッドを使い、ユーザーディレクトリ配下のApplication Supportディレクトリ(~/Library/Application Support)を取得するには以下のような感じになる。

                var appSupportDir = NSSearchPath.GetDirectories(
                    directory : NSSearchPathDirectory.ApplicationSupportDirectory, 
                    domainMask: NSSearchPathDomain.User
                ).FirstOrDefault();

NSSearchPathクラスのGetDirectoriesメソッドの戻り値配列なので注意する必要がある。domainMask引数で取得範囲をユーザーディレクトリに限定しているので戻り値は1個しか返ってこないはずであり、LINQでFirstOrDefaultしてしまうのが手っ取り早い。

備考1

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

アプリごとにサブディレクトリを作るのであれば、MonoMacのプロジェクトを作ると必ずある「Info.plist」の内容はNSBundleクラスで取得できるので、Preferencesディレクトリ風(NSUserDefaultsクラスでググれ)にBundle Identifierで区切ると良い感じかもしれない。

                var appDataDir = System.IO.Path.Combine(appSupportDir, NSBundle.MainBundle.BundleIdentifier);

方法2

.NET Frameworkでは標準的なEnvironment.SpecialFolderを使った場合に取得できる値を列挙する。 2015年2月時点での値なので将来的に未対応のものを中心に値が追加される可能性はある。

Environment.SpecialFolder列挙体 Environment.GetFolderPathの戻り値
AdminTools 未対応、空文字が返ってくる
ApplicationData /Users/monobook/.config
CDBurning 未対応、空文字が返ってくる
CommonAdminTools 未対応、空文字が返ってくる
CommonApplicationData /usr/share
CommonDesktopDirectory 未対応、空文字が返ってくる
CommonDocuments 未対応、空文字が返ってくる
CommonMusic 未対応、空文字が返ってくる
CommonOemLinks 未対応、空文字が返ってくる
CommonPictures 未対応、空文字が返ってくる
CommonProgramFiles 未対応、空文字が返ってくる
CommonProgramFilesX86 未対応、空文字が返ってくる
CommonPrograms 未対応、空文字が返ってくる
CommonStartMenu 未対応、空文字が返ってくる
CommonStartup 未対応、空文字が返ってくる
CommonTemplates /usr/share/templates
CommonVideos 未対応、空文字が返ってくる
Cookies 未対応、空文字が返ってくる
Desktop /Users/monobook/Desktop
DesktopDirectory /Users/monobook/Desktop
Favorites /Users/monobook/Library/Favorites
Fonts /Users/monobook/Library/Fonts
History 未対応、空文字が返ってくる
InternetCache /Users/monobook/Library/Caches
LocalApplicationData /Users/monobook/.local/share
LocalizedResources 未対応、空文字が返ってくる
MyComputer 未対応、空文字が返ってくる
MyDocuments /Users/monobook
MyMusic /Users/monobook/Music
MyPictures /Users/monobook/Pictures
MyVideos /Users/monobook/Videos
NetworkShortcuts 未対応、空文字が返ってくる
PrinterShortcuts 未対応、空文字が返ってくる
ProgramFiles /Applications
ProgramFilesX86 未対応、空文字が返ってくる
Programs 未対応、空文字が返ってくる
Recent 未対応、空文字が返ってくる
Resources 未対応、空文字が返ってくる
SendTo 未対応、空文字が返ってくる
StartMenu 未対応、空文字が返ってくる
Startup 未対応、空文字が返ってくる
System 未対応、空文字が返ってくる
SystemX86 未対応、空文字が返ってくる
Templates /Users/monobook/Templates
UserProfile /Users/monobook
Windows 未対応、空文字が返ってくる

関連項目

参考文献