「MonoやXamarinで絶対パスを取得する」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
C#において[[Windows]]上で絶対パスを取得するだけならばSystem.IO.Path.GetFullPathメソッドでいいわけだが、 | C#において[[Windows]]上で絶対パスを取得するだけならばSystem.IO.Path.GetFullPathメソッドでいいわけだが、 | ||
− | [[Linux]]上の[[mono]]や[[MacOS]]上の | + | [[Linux]]上の[[mono]]や[[MacOS]]上の[Xamarin]などではホームディレクトリを表す「~(チルダ)」を解決してくれなくて残念な結果になる。 |
; ダメな例 | ; ダメな例 | ||
10行目: | 10行目: | ||
using System; | using System; | ||
using System.IO; | using System.IO; | ||
− | |||
public static class PathUtil | public static class PathUtil | ||
17行目: | 16行目: | ||
{ | { | ||
var realPath = ""; | var realPath = ""; | ||
− | if (path.StartsWith("~ | + | if (path.StartsWith("~", StringComparison.Ordinal)) |
{ | { | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
string homePath = ( | string homePath = ( | ||
Environment.OSVersion.Platform == PlatformID.Unix || | Environment.OSVersion.Platform == PlatformID.Unix || | ||
31行目: | 23行目: | ||
? Environment.GetEnvironmentVariable("HOME") | ? Environment.GetEnvironmentVariable("HOME") | ||
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%"); | : Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%"); | ||
− | + | ||
− | realPath = Path.Combine(homePath, path.Substring( | + | realPath = Path.Combine(homePath, path.Substring(1)); |
} | } | ||
else | else | ||
41行目: | 33行目: | ||
return Path.GetFullPath(realPath); | return Path.GetFullPath(realPath); | ||
} | } | ||
+ | } | ||
</source> | </source> | ||