Xamarin: ファイルパスの取得

概要

iOS, Androidのシステムディレクトリを取得する。

iOS, Android共通のAPI

Xamarin.Essentials.FileSystem及びSystem.Environment.SpecialFolderを使用することができる。

サンプルコード

System.Console.WriteLine("FileSystem.CacheDirectory=" + FileSystem.CacheDirectory);
System.Console.WriteLine("FileSystem.AppDataDirectory=" + FileSystem.AppDataDirectory);

System.Console.WriteLine("Environment.SpecialFolder.AdminTools=" + Environment.GetFolderPath(Environment.SpecialFolder.AdminTools));
System.Console.WriteLine("Environment.SpecialFolder.ApplicationData=" + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
System.Console.WriteLine("Environment.SpecialFolder.CDBurning=" + Environment.GetFolderPath(Environment.SpecialFolder.CDBurning));
System.Console.WriteLine("Environment.SpecialFolder.CommonAdminTools=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonAdminTools));
System.Console.WriteLine("Environment.SpecialFolder.CommonDesktopDirectory=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory));
System.Console.WriteLine("Environment.SpecialFolder.CommonDocuments=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments));
System.Console.WriteLine("Environment.SpecialFolder.CommonMusic=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonMusic));
System.Console.WriteLine("Environment.SpecialFolder.CommonOemLinks=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonOemLinks));
System.Console.WriteLine("Environment.SpecialFolder.CommonPictures=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures));
System.Console.WriteLine("Environment.SpecialFolder.CommonProgramFiles=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles));
System.Console.WriteLine("Environment.SpecialFolder.CommonProgramFilesX86=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86));
System.Console.WriteLine("Environment.SpecialFolder.CommonPrograms=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms));
System.Console.WriteLine("Environment.SpecialFolder.CommonStartMenu=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu));
System.Console.WriteLine("Environment.SpecialFolder.CommonStartup=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup));
System.Console.WriteLine("Environment.SpecialFolder.CommonTemplates=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonTemplates));
System.Console.WriteLine("Environment.SpecialFolder.CommonVideos=" + Environment.GetFolderPath(Environment.SpecialFolder.CommonVideos));
System.Console.WriteLine("Environment.SpecialFolder.Cookies=" + Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
System.Console.WriteLine("Environment.SpecialFolder.Desktop=" + Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
System.Console.WriteLine("Environment.SpecialFolder.DesktopDirectory=" + Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
System.Console.WriteLine("Environment.SpecialFolder.Favorites=" + Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
System.Console.WriteLine("Environment.SpecialFolder.Fonts=" + Environment.GetFolderPath(Environment.SpecialFolder.Fonts));
System.Console.WriteLine("Environment.SpecialFolder.History=" + Environment.GetFolderPath(Environment.SpecialFolder.History));
System.Console.WriteLine("Environment.SpecialFolder.InternetCache=" + Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
System.Console.WriteLine("Environment.SpecialFolder.LocalApplicationData=" + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
System.Console.WriteLine("Environment.SpecialFolder.LocalizedResources=" + Environment.GetFolderPath(Environment.SpecialFolder.LocalizedResources));
System.Console.WriteLine("Environment.SpecialFolder.MyComputer=" + Environment.GetFolderPath(Environment.SpecialFolder.MyComputer));
System.Console.WriteLine("Environment.SpecialFolder.MyDocuments=" + Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
System.Console.WriteLine("Environment.SpecialFolder.MyMusic=" + Environment.GetFolderPath(Environment.SpecialFolder.MyMusic));
System.Console.WriteLine("Environment.SpecialFolder.MyPictures=" + Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
System.Console.WriteLine("Environment.SpecialFolder.MyVideos=" + Environment.GetFolderPath(Environment.SpecialFolder.MyVideos));
System.Console.WriteLine("Environment.SpecialFolder.NetworkShortcuts=" + Environment.GetFolderPath(Environment.SpecialFolder.NetworkShortcuts));
System.Console.WriteLine("Environment.SpecialFolder.Personal=" + Environment.GetFolderPath(Environment.SpecialFolder.Personal));
System.Console.WriteLine("Environment.SpecialFolder.PrinterShortcuts=" + Environment.GetFolderPath(Environment.SpecialFolder.PrinterShortcuts));
System.Console.WriteLine("Environment.SpecialFolder.ProgramFiles=" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
System.Console.WriteLine("Environment.SpecialFolder.ProgramFilesX86=" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
System.Console.WriteLine("Environment.SpecialFolder.Programs=" + Environment.GetFolderPath(Environment.SpecialFolder.Programs));
System.Console.WriteLine("Environment.SpecialFolder.Recent=" + Environment.GetFolderPath(Environment.SpecialFolder.Recent));
System.Console.WriteLine("Environment.SpecialFolder.Resources=" + Environment.GetFolderPath(Environment.SpecialFolder.Resources));
System.Console.WriteLine("Environment.SpecialFolder.SendTo=" + Environment.GetFolderPath(Environment.SpecialFolder.SendTo));
System.Console.WriteLine("Environment.SpecialFolder.StartMenu=" + Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
System.Console.WriteLine("Environment.SpecialFolder.Startup=" + Environment.GetFolderPath(Environment.SpecialFolder.Startup));
System.Console.WriteLine("Environment.SpecialFolder.System=" + Environment.GetFolderPath(Environment.SpecialFolder.System));
System.Console.WriteLine("Environment.SpecialFolder.SystemX86=" + Environment.GetFolderPath(Environment.SpecialFolder.SystemX86));
System.Console.WriteLine("Environment.SpecialFolder.Templates=" + Environment.GetFolderPath(Environment.SpecialFolder.Templates));
System.Console.WriteLine("Environment.SpecialFolder.UserProfile=" + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
System.Console.WriteLine("Environment.SpecialFolder.Windows=" + Environment.GetFolderPath(Environment.SpecialFolder.Windows));

Android用のAPI

Android.OS.Environmentを使用することができる。

サンプルコード

System.Console.WriteLine("Android.OS.Environment.DataDirectory=" + Android.OS.Environment.DataDirectory.AbsolutePath);
System.Console.WriteLine("Android.OS.Environment.DirectoryAlarms=" + Android.OS.Environment.DirectoryAlarms);
System.Console.WriteLine("Android.OS.Environment.DirectoryDcim=" + Android.OS.Environment.DirectoryDcim);
System.Console.WriteLine("Android.OS.Environment.DirectoryDocuments=" + Android.OS.Environment.DirectoryDocuments);
System.Console.WriteLine("Android.OS.Environment.DirectoryDownloads=" + Android.OS.Environment.DirectoryDownloads);
System.Console.WriteLine("Android.OS.Environment.DirectoryMovies=" + Android.OS.Environment.DirectoryMovies);
System.Console.WriteLine("Android.OS.Environment.DirectoryMusic=" + Android.OS.Environment.DirectoryMusic);
System.Console.WriteLine("Android.OS.Environment.DirectoryNotifications=" + Android.OS.Environment.DirectoryNotifications);
System.Console.WriteLine("Android.OS.Environment.DirectoryPictures=" + Android.OS.Environment.DirectoryPictures);
System.Console.WriteLine("Android.OS.Environment.DirectoryPodcasts=" + Android.OS.Environment.DirectoryPodcasts);
System.Console.WriteLine("Android.OS.Environment.DirectoryRingtones=" + Android.OS.Environment.DirectoryRingtones);
System.Console.WriteLine("Android.OS.Environment.DownloadCacheDirectory=" + Android.OS.Environment.DownloadCacheDirectory.AbsolutePath);
System.Console.WriteLine("Android.OS.Environment.ExternalStorageDirectory=" + Android.OS.Environment.ExternalStorageDirectory.AbsolutePath);

Androidでの実行結果

FileSystem.CacheDirectory=/data/user/0/com.companyname.xamarintest1/cache
FileSystem.AppDataDirectory=/data/user/0/com.companyname.xamarintest1/files

Environment.SpecialFolder.AdminTools=
Environment.SpecialFolder.ApplicationData=/data/user/0/com.companyname.xamarintest1/files/.config
Environment.SpecialFolder.CDBurning=
Environment.SpecialFolder.CommonAdminTools=
Environment.SpecialFolder.CommonDesktopDirectory=
Environment.SpecialFolder.CommonDocuments=
Environment.SpecialFolder.CommonMusic=
Environment.SpecialFolder.CommonOemLinks=
Environment.SpecialFolder.CommonPictures=
Environment.SpecialFolder.CommonProgramFiles=
Environment.SpecialFolder.CommonProgramFilesX86=
Environment.SpecialFolder.CommonPrograms=
Environment.SpecialFolder.CommonStartMenu=
Environment.SpecialFolder.CommonStartup=
Environment.SpecialFolder.CommonTemplates=/usr/share/templates
Environment.SpecialFolder.CommonVideos=
Environment.SpecialFolder.Cookies=
Environment.SpecialFolder.Desktop=/data/user/0/com.companyname.xamarintest1/files/Desktop
Environment.SpecialFolder.DesktopDirectory=/data/user/0/com.companyname.xamarintest1/files/Desktop
Environment.SpecialFolder.Favorites=
Environment.SpecialFolder.Fonts=/data/user/0/com.companyname.xamarintest1/files/.fonts
Environment.SpecialFolder.History=
Environment.SpecialFolder.InternetCache=
Environment.SpecialFolder.LocalApplicationData=/data/user/0/com.companyname.xamarintest1/files/.local/share
Environment.SpecialFolder.LocalizedResources=
Environment.SpecialFolder.MyComputer=
Environment.SpecialFolder.MyDocuments=/data/user/0/com.companyname.xamarintest1/files
Environment.SpecialFolder.MyMusic=/data/user/0/com.companyname.xamarintest1/files/Music
Environment.SpecialFolder.MyPictures=/data/user/0/com.companyname.xamarintest1/files/Pictures
Environment.SpecialFolder.MyVideos=/data/user/0/com.companyname.xamarintest1/files/Videos
Environment.SpecialFolder.NetworkShortcuts=
Environment.SpecialFolder.Personal=/data/user/0/com.companyname.xamarintest1/files
Environment.SpecialFolder.PrinterShortcuts=
Environment.SpecialFolder.ProgramFiles=
Environment.SpecialFolder.ProgramFilesX86=
Environment.SpecialFolder.Programs=
Environment.SpecialFolder.Recent=
Environment.SpecialFolder.Resources=
Environment.SpecialFolder.SendTo=
Environment.SpecialFolder.StartMenu=
Environment.SpecialFolder.Startup=
Environment.SpecialFolder.System=
Environment.SpecialFolder.SystemX86=
Environment.SpecialFolder.Templates=/data/user/0/com.companyname.xamarintest1/files/Templates
Environment.SpecialFolder.UserProfile=/data/user/0/com.companyname.xamarintest1/files
Environment.SpecialFolder.Windows=

Android.OS.Environment.DataDirectory=/data
Android.OS.Environment.DirectoryAlarms=Alarms
Android.OS.Environment.DirectoryDcim=DCIM
Android.OS.Environment.DirectoryDocuments=Documents
Android.OS.Environment.DirectoryDownloads=Download
Android.OS.Environment.DirectoryMovies=Movies
Android.OS.Environment.DirectoryMusic=Music
Android.OS.Environment.DirectoryNotifications=Notifications
Android.OS.Environment.DirectoryPictures=Pictures
Android.OS.Environment.DirectoryPodcasts=Podcasts
Android.OS.Environment.DirectoryRingtones=Ringtones
Android.OS.Environment.DownloadCacheDirectory=/data/cache
Android.OS.Environment.ExternalStorageDirectory=/storage/emulated/0

iOS用のAPI

iOS専用のAPIは無い。

iOSでの実行結果

2020-04-18 22:46:07.966732+0900 XamarinTest1.iOS[2050:88781] FileSystem.CacheDirectory=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Library/Caches
2020-04-18 22:46:07.967332+0900 XamarinTest1.iOS[2050:88781] FileSystem.AppDataDirectory=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Library

2020-04-18 22:46:07.968260+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.AdminTools=
2020-04-18 22:46:07.971232+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.ApplicationData=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/.config
2020-04-18 22:46:07.971497+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CDBurning=
2020-04-18 22:46:07.971686+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonAdminTools=
2020-04-18 22:46:07.971847+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonDesktopDirectory=
2020-04-18 22:46:07.972006+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonDocuments=
2020-04-18 22:46:07.972158+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonMusic=
2020-04-18 22:46:07.972298+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonOemLinks=
2020-04-18 22:46:07.972446+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonPictures=
2020-04-18 22:46:07.972606+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonProgramFiles=
2020-04-18 22:46:07.972750+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonProgramFilesX86=
2020-04-18 22:46:07.972894+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonPrograms=
2020-04-18 22:46:07.973094+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonStartMenu=
2020-04-18 22:46:07.973357+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonStartup=
2020-04-18 22:46:07.973925+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonTemplates=/usr/share/templates
2020-04-18 22:46:07.974167+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.CommonVideos=
2020-04-18 22:46:07.974568+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Cookies=
2020-04-18 22:46:07.974975+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Desktop=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Desktop
2020-04-18 22:46:07.975211+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.DesktopDirectory=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Desktop
2020-04-18 22:46:07.975752+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Favorites=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Library/Favorites
2020-04-18 22:46:07.975932+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Fonts=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/.fonts
2020-04-18 22:46:07.988805+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.History=
2020-04-18 22:46:07.989048+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.InternetCache=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Library/Caches
2020-04-18 22:46:07.989231+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.LocalApplicationData=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents
2020-04-18 22:46:07.989394+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.LocalizedResources=
2020-04-18 22:46:07.989547+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.MyComputer=
2020-04-18 22:46:07.989770+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.MyDocuments=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents
2020-04-18 22:46:07.989947+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.MyMusic=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Music
2020-04-18 22:46:07.990092+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.MyPictures=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Pictures
2020-04-18 22:46:07.990298+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.MyVideos=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Videos
2020-04-18 22:46:07.990474+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.NetworkShortcuts=
2020-04-18 22:46:07.990646+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Personal=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents
2020-04-18 22:46:07.991042+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.PrinterShortcuts=
2020-04-18 22:46:07.991306+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.ProgramFiles=/Applications
2020-04-18 22:46:07.991581+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.ProgramFilesX86=
2020-04-18 22:46:07.991846+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Programs=
2020-04-18 22:46:07.992111+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Recent=
2020-04-18 22:46:07.992530+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Resources=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Library
2020-04-18 22:46:07.993036+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.SendTo=
2020-04-18 22:46:07.993459+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.StartMenu=
2020-04-18 22:46:07.993887+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Startup=
2020-04-18 22:46:07.998486+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.System=
2020-04-18 22:46:07.998982+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.SystemX86=
2020-04-18 22:46:07.999188+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Templates=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3/Documents/Templates
2020-04-18 22:46:08.001211+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.UserProfile=/Users/shindo/Library/Developer/CoreSimulator/Devices/4C7E2688-C529-4E22-9B91-B375C5BF6CB4/data/Containers/Data/Application/ABAC4C39-B223-4397-96B2-08E3C2172AE3
2020-04-18 22:46:08.001619+0900 XamarinTest1.iOS[2050:88781] Environment.SpecialFolder.Windows=

サンプルプロジェクト

github.com