「MonoMac/特殊ディレクトリのパスを取得する」の版間の差分
(→備考1) |
|||
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 | 未対応、空文字が返ってくる |