文字列が正規表現以外のローカルフォルダ文字列またはネットワーク文字列である場合、C#でどのように判断できますか?例えば文字列がローカルフォルダ文字列かネットワーク文字列かどうかを確認する方法はありますか?
:
私は"c:\a"
または"\\foldera\folderb"
文字列が正規表現以外のローカルフォルダ文字列またはネットワーク文字列である場合、C#でどのように判断できますか?例えば文字列がローカルフォルダ文字列かネットワーク文字列かどうかを確認する方法はありますか?
:
私は"c:\a"
または"\\foldera\folderb"
からDRIVETYPEを使用し
ファイルパスのためのDriveInfoオブジェクトを取得するには、この答えを参照してくださいすることができます文字列を持っていますこれがネットワークパスであるかどうかを判断します。http://msdn.microsoft.com/en-us/library/system.io.driveinfo.drivetype.aspx
new Uri(mypath).IsUnc
また、 –
私はこの質問への完全な答えはDriveInfo.DriveTypeプロパティの使用を含めることだと思います。
public static bool IsNetworkPath(string path)
{
if (!path.StartsWith(@"/") && !path.StartsWith(@"\"))
{
string rootPath = System.IO.Path.GetPathRoot(path); // get drive's letter
System.IO.DriveInfo driveInfo = new System.IO.DriveInfo(rootPath); // get info about the drive
return driveInfo.DriveType == DriveType.Network; // return true if a network drive
}
return true; // is a UNC path
}
スラッシュ文字で始まるかどうかを確認するパスをテストし、それがスラッシュチャールで始まる場合はUNCパスです。この場合、ネットワークパスであると仮定する必要があります。実際には、ローカルマシンを指し示すUNCパスである可能性があるため、別のPCを指すパスではない可能性があります。私が推測するほとんどの人にはおそらくそうですが、もっと弾丸に耐えられる解決策が必要な場合は、この状態のチェックを追加することができます。
パスがスラッシュ文字で始まらない場合は、DriveInfo.DriveTypeプロパティを使用して、ネットワークドライブかどうかを判断します。
おもしろい質問と回答、 私は簡単なpathstring.Substring(1, 2) != @":\"
を試してみることがあります。ローカルまたはネットワークドライブへのパスポイントかどうかを確認する
も `pathstringが長さゼロまたはヌル
ではないことを予め確認**編集
もう一つの方法:
var host = new Uri(@"\\foldera\folderb").Host; //returns "foldera"
if(!string.IsNullOrEmpty(host))
{
//Network drive
}
でもUNCパス( '\\\ 'で始まる)がローカルマシンを指している可能性があります。 – Oded
参照http://stackoverflow.com/questions/520753/what-is-the-correct-way-to-check-if-a-path-is-an-unc-path-or-a-local-path/ 520796#520796 – nos
余りにも遅いですが、これは完璧な答えです。 [link]、これをいくつかご希望ですか? [1]:http://stackoverflow.com/questions/2243569/check-if-path-is-on -network#2244497 – mahmoodels