日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

如何通过 C# 判断一个 路径 是本机还是远程 ?

發(fā)布時(shí)間:2023/12/4 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过 C# 判断一个 路径 是本机还是远程 ? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

咨詢區(qū)

  • David Boike

請(qǐng)問在 C# 中是否有好的方式判斷 path 是在本地還是在遠(yuǎn)程,我想到了用 UNC 屬性來判斷,比如下面的代碼:

new?Uri(path).IsUnc

但這代碼也有一定的問題,它會(huì)誤判下面的 path 格式。

\\machinename\sharename\directory \\10.12.34.56\sharename\directory

上面這兩種格式也是在本地,而不是遠(yuǎn)程。

回答區(qū)

  • Stephen

我是借助 Shlwapi.dll 這個(gè) win32 api 來實(shí)現(xiàn)的,可以用它來判斷當(dāng)前的 path 來自于 drivers 還是 UNC。

private?static?bool?IsLocalPath(String?path) {if?(!PathIsUNC(path)){return?!PathIsNetworkPath(path);}Uri?uri?=?new?Uri(path);return?IsLocalHost(uri.Host);?//?Refer?to?David's?answer }[DllImport("Shlwapi.dll")] [return:?MarshalAs(UnmanagedType.Bool)] static?extern?bool?PathIsNetworkPath(String?pszPath);[DllImport("Shlwapi.dll")] [return:?MarshalAs(UnmanagedType.Bool)] static?extern?bool?PathIsUNC(String?pszPath);
  • Eric Rosenberger

可以通過 path 的 host 來判斷當(dāng)前是否為 回路地址,我不知道這是否是最高效的解決方案,但適合我。

IPAddress[]?host;IPAddress[]?local;bool?isLocal?=?false;host?=?Dns.GetHostAddresses(uri.Host);local?=?Dns.GetHostAddresses(Dns.GetHostName());foreach?(IPAddress?hostAddress?in?host){if?(IPAddress.IsLoopback(hostAddress)){isLocal?=?true;break;}else{foreach?(IPAddress?localAddress?in?local){if?(hostAddress.Equals(localAddress)){isLocal?=?true;break;}}if?(isLocal){break;}}}
  • Renato Heeb

我是通過 path 的 DriverInfo 的 DriverType = Network 來判斷當(dāng)前是否為遠(yuǎn)程。

public?static?bool?IsLocal(DirectoryInfo?dir){foreach?(DriveInfo?d?in?DriveInfo.GetDrives()){if?(string.Compare(dir.Root.FullName,?d.Name,?StringComparison.OrdinalIgnoreCase)?==?0)?//[drweb86]?Fix?for?different?case.{return?(d.DriveType?!=?DriveType.Network);}}throw?new?DriveNotFoundException();}

點(diǎn)評(píng)區(qū)

這場(chǎng)景我還真的遇到過,曾經(jīng)給醫(yī)院內(nèi)網(wǎng)部署桌面程序時(shí),需要讀取局域網(wǎng)共享文件中的 txt 文本,三位大佬提供的方案很全面,學(xué)習(xí)了。

總結(jié)

以上是生活随笔為你收集整理的如何通过 C# 判断一个 路径 是本机还是远程 ?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。