🗿
[C#] パスが、ローカルPCのパスか、サーバー上のパスか判定する
もくじ
やりたいこと
ローカルPCのファイルパスを渡すメソッドに、サーバー上のファイルのパスを渡したときに落ちてしまうということがあり、サーバー上のファイルのパスかどうかを判定して、落ちないようにしたい。
ローカルPCのファイルパス:
C:\Windows\System32\notepad.exe のようなパス
サーバー上のパス:
\servername\share\MyDocuments\textfile.txt のようなパス
やり方
サーバー上のファイルのようなパスは、UNCパス というらしい。
そのUNCパスかどうかは、UriクラスのIsUncプロパティで判別できる。
サンプルコード
var normal = new Uri(@"C:\Windows\System32\notepad.exe");
var unc = new Uri(@"\\servername\share\MyDocuments\textfile.txt");
Debug.WriteLine(normal.IsUnc); // → false
Debug.WriteLine(unc.IsUnc); // → true
参考
Discussion