📁
Xamarin.MacでSpecialFolderを利用する
.NET Frameworkには、特殊なフォルダのパスを取得するメソッドがある。
System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
このメソッドは、SpecialFolder列挙体を渡すことでパスを取得するフォルダを指定する。この列挙体の中には、「Windows」などの、環境依存なものもある。Xamarin.MacでもWindowsフォルダのパスの取得を試みることができるが、どのような結果になるか気になったため調べてみた。また、せっかくなのでSpecialFolder列挙体全てについて結果を確認してみた。
調査結果
空欄は空文字列で、nullになることはない。
| SpecialFolder列挙体 | パス |
|---|---|
| Desktop | /Users/<ユーザ名>/Desktop |
| Programs | |
| MyDocuments | /Users/<ユーザ名> |
| Favorites | /Users/<ユーザ名>/Library/Favorites |
| Startup | |
| Recent | |
| SendTo | |
| StartMenu | |
| MyMusic | /Users/<ユーザ名>/Music |
| MyVideos | /Users/<ユーザ名>/Videos |
| DesktopDirectory | /Users/<ユーザ名>/Desktop |
| MyComputer | |
| NetworkShortcuts | |
| Fonts | /Users/<ユーザ名>/Library/Fonts |
| Templates | /Users/<ユーザ名>/Templates |
| CommonStartMenu | |
| CommonPrograms | |
| CommonStartup | |
| CommonDesktopDirectory | |
| ApplicationData | /Users/<ユーザ名>/.config |
| PrinterShortcuts | |
| LocalApplicationData | /Users/<ユーザ名>/.local/share |
| InternetCache | /Users/<ユーザ名>/Library/Caches |
| Cookies | |
| History | |
| CommonApplicationData | /usr/share |
| Windows | |
| System | |
| ProgramFiles | /Applications |
| MyPictures | /Users/<ユーザ名>/Pictures |
| UserProfile | /Users/<ユーザ名> |
| SystemX86 | |
| ProgramFilesX86 | |
| CommonProgramFiles | |
| CommonProgramFilesX86 | |
| CommonTemplates | /usr/share/templates |
| CommonDocuments | |
| CommonAdminTools | |
| AdminTools | |
| CommonMusic | |
| CommonPictures | |
| CommonVideos | |
| Resources | |
| LocalizedResources | |
| CommonOemLinks | |
| CDBurning |
コード
上記の出力を得るために以下のコードを使用した
foreach(Environment.SpecialFolder f in Enum.GetValues(typeof(Environment.SpecialFolder)))
{
var name = f.ToString();
var path = Environment.GetFolderPath(f);
logger.Info($"|{name}|{path ?? "null"}|");
}
環境
Mac OS X 10.15.6
Visual Studio for Mac Community 8.8.1(build 37)
Xamarin Mac 7.0.0.15
XCode Version 12.
Discussion