GetPathRootがUNCパスをサポートしていないようです。以下のコードの結果は単にfile.txtを切り捨てただけです。UNCパスのSystem.IO.Path.GetPathRoot回避策
string root = Path.GetPathRoot("\\servername.pvt\sub dir\file.txt");
良い回避策はありますか?
GetPathRootがUNCパスをサポートしていないようです。以下のコードの結果は単にfile.txtを切り捨てただけです。UNCパスのSystem.IO.Path.GetPathRoot回避策
string root = Path.GetPathRoot("\\servername.pvt\sub dir\file.txt");
良い回避策はありますか?
戻り値は正しいです。ルートはシェアであり、サーバーではありません!たとえば、
Path.GetPathRoot(@"\\servername.pvt\sharename\directory\file.txt");
これは@"\\servername.pvt\sharename"
を返します。サーバー名と共有名がパスのルートを構成します。
サーバUNCアドレスを取得する場合は、良い解決策を使用しないようにしてくださいPath.GetPathRoot
、すべての場合に3番目の後にすべてを消去\
これはすべてのケースで動作すると思います。
例では、UNCパスの場合、サーバーと共有ディレクトリ名はであり、ルートディレクトリと見なされます。
サーバー名だけを使用したい場合は、サーバーの後に自分自身を剥がすことができる「パス要素」が1つしか存在しないと考えるのが安全です。