Xamarin.Macで相対パスを絶対パスに変換する
2018年12月28日 (金) 01:52時点における180.15.192.154 (トーク)による版
近年のファイルシステム系のAPIはセキュリティの関係で引数に相対パスを指定できなくしていることが多く、その場合は明示的に絶対パスに変換しておく必要がある。
ほとんどのOSではファイルシステム系APIの中に変換してくれるものを用意している。たとえば*BSDやLinuxではrealpath関数が用意されている。一方、Macではファイルシステム系APIではなくNSStringに変換関数が用意されており、Xamarin.Macでは相対パスを格納したNSStringを用意してStandarizePath関数を叩くと絶対パスが得られる。
// 相対パス
var relativePath = new NSString(@"~/Documents/");
// 絶対パスに変換
var absolutePath = relativePath.StandarizePath();