🗿

[C#] パスが、ローカルPCのパスか、サーバー上のパスか判定する

2021/08/27に公開

もくじ

https://qiita.com/tera1707/items/4fda73d86eded283ec4f

やりたいこと

ローカル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

参考

https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/b700c7a3-841f-42fc-aa8e-f634bec9d458/3689024120123981249712473-unc1249712473?forum=csharpgeneralja

Discussion