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命令也需要較長時間。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM