2010-11-19 32 views
0

GetPathRootがUNCパスをサポートしていないようです。以下のコードの結果は単にfile.txtを切り捨てただけです。UNCパスのSystem.IO.Path.GetPathRoot回避策

string root = Path.GetPathRoot("\\servername.pvt\sub dir\file.txt"); 

良い回避策はありますか?

答えて

5

戻り値は正しいです。ルートはシェアであり、サーバーではありません!たとえば、

Path.GetPathRoot(@"\\servername.pvt\sharename\directory\file.txt"); 

これは@"\\servername.pvt\sharename"を返します。サーバー名と共有名がパスのルートを構成します。

0

サーバUNCアドレスを取得する場合は、良い解決策を使用しないようにしてくださいPath.GetPathRoot、すべての場合に3番目の後にすべてを消去\これはすべてのケースで動作すると思います。

1

例では、UNCパスの場合、サーバーと共有ディレクトリ名はであり、ルートディレクトリと見なされます。

サーバー名だけを使用したい場合は、サーバーの後に自分自身を剥がすことができる「パス要素」が1つしか存在しないと考えるのが安全です。