• 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命令也需要较长时间。)

  • 相关阅读:
    [moka同学笔记]一、Yii2.0课程笔记(魏曦老师教程)
    [moka同学笔记]yii2.0导航栏
    [moka同学笔记]Yii2.0 dropDownList的使用(二)
    [moka同学笔记]Yii2.0验证码
    [moka同学摘录]Yii2 csv数据导出扩展
    [moka同学笔记]PHPexcel之excel导出和导入
    [moka同学代码]PHP初级知识:上传文件源码
    [moka同学摘录]在Centos 6.5下成功安装和配置了vim7.4
    [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存
    [moka同学笔记]linux服务器防火墙的设置
  • 原文地址:https://www.cnblogs.com/yellow3gold/p/14297712.html
Copyright © 2020-2023  润新知