C#快速判断能否正常访问共享文件
1.在访问共享路径的时候,如果没有事先连接过,直接在代码中访问会异常,而且这个异常的时间会特别的长,我们试一下:
using System; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { const string path = @"\\192.168.0.10\验证文件\验证.txt"; var timeStart = DateTime.Now; try { Process.Start(path); } catch (Exception ex) { var time = DateTime.Now - timeStart; Console.WriteLine(ex + "\r\n总耗时:" + time.Seconds + "秒"); } Console.ReadKey(); } } }
看一下第一次执行的结果:
总耗时22秒,这显然是不能忍受的。(第一次会比较慢,再访问的时候会比较快。)
2.那么如何规避这种问题,快速判断共享文件能否正常访问呢?
我们可以通过cmd.exe下执行net use \\192.168.0.10\验证文件 来快速判断,代码实现如下:
using System; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { const string path = @"\\192.168.0.10\验证文件"; string message; var timeStart = DateTime.Now; using (var process = new Process { StartInfo = { FileName = "cmd.exe", UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, CreateNoWindow = true, RedirectStandardError = true } }) { process.Start(); process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine(@"net use " + path); process.StandardInput.WriteLine("exit"); errorMessage = process.StandardError.ReadToEnd(); process.WaitForExit(); if (string.IsNullOrEmpty(errorMessage)) { var timespan = DateTime.Now - timeStart; Console.WriteLine(@"权限不足:" + path + "\r\n" + message + "\r\n总耗时:" + timespan.Milliseconds + "毫秒!"); } } Console.ReadKey(); } } }
再来看一下运行结果:
耗时327毫秒!
很明显速度快多了!
当然这时候你也可以输入用户名密码来建立连接:
具体cmd命令如下:
net use \\192.168.0.10\验证文件 访问共享的密码 /user:访问共享的账号
(这里有一个前提:网络共享的路径必须真实有效,如果“找不到网络路径”,第一次使用net use命令也需要较长时间。)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)