您的位置:首页 > 编程语言 > C#

C# 远程访问并复制文件

2013-09-08 11:45 966 查看
以下代码可以实现将远程主机上的共享文件复制到本地。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Diagnostics;

using System.IO;

namespace FileCopyFromRemoteComputer

{

    class Program

    {

        static void Main(string[] args)

        {

            if (Ping("10.71.1.67"))

                {

                    string remote = @"\\10.71.1.67\gongxiang222";
                    string aimPath = @"D:\copytest";

                    if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)    //给目标路径添加\\
                        aimPath += Path.DirectorySeparatorChar;

                    if (!Directory.Exists(aimPath))
   //如果目标文件夹不存在,则创建

                        Directory.CreateDirectory(aimPath);

                    string[] fileList = Directory.GetFileSystemEntries(remote);
   //获取远程路径下的所有文件列表

                    DateTime dtStart = DateTime.Now;
   //开始复制的时间

                  

                    foreach (string file in fileList)

                    {

                            File.Copy(file, aimPath + Path.GetFileName(file), true);
  //复制文件到目标路径

                    }

                    DateTime dtEnd = DateTime.Now;
  //结束时间

                   int time =  dtEnd.Subtract(dtStart).Seconds;
  //耗时统计

                   Console.WriteLine(time);

                   Console.ReadKey();

                }

            

        }

        public static bool Ping(string remoteHost)
  //Ping远程主机

        {

            bool Flag = false;

            Process proc = new Process();

            try

            {

                proc.StartInfo.FileName = "cmd.exe";

                proc.StartInfo.UseShellExecute = false;

                proc.StartInfo.RedirectStandardInput = true;

                proc.StartInfo.RedirectStandardOutput = true;

                proc.StartInfo.RedirectStandardError = true;

                proc.StartInfo.CreateNoWindow = true;

                proc.Start();

                string dosLine = @"ping -n 1 " + remoteHost;

                proc.StandardInput.WriteLine(dosLine);

                proc.StandardInput.WriteLine("exit");

                while (proc.HasExited == false)

                {

                    proc.WaitForExit(500);

                }

                string pingResult = proc.StandardOutput.ReadToEnd();

                if (pingResult.IndexOf("(0% loss)") != -1)

                {

                    Flag = true;

                }

                proc.StandardOutput.Close();

            }

            catch (Exception ex)

            {

            }

            finally

            {

                try

                {

                    proc.Close();

                    proc.Dispose();

                }

                catch

                {

                }

            }

            return Flag;

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: