zoukankan      html  css  js  c++  java
  • C#实现服务器间文件同步

    C#实现服务器间文件同步

    复制代码
    using System.IO;
    
    
            /// <summary>
            /// 远程登陆服务器
            /// </summary>
            /// <param name="remoteHost">远程服务器IP路径</param>
            /// <param name="userName"></param>
            /// <param name="passWord"></param>
            /// <returns>是否登陆成功</returns>
            public static bool ConnectServer(string remoteHost, string userName, string passWord)
            {
                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 = "net use " + remoteHost + " " + passWord + " /user:" + userName;
                    proc.StandardInput.WriteLine(dosLine);
                    proc.StandardInput.WriteLine("exit");
                    while (!proc.HasExited)
                    {
                        proc.WaitForExit(1000);
                    }
                    proc.StandardError.Close();
    
                    Flag = true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    proc.Close();
                    proc.Dispose();
                }
    
                return Flag;
            }
            //Connect(@"\192.168.15.90", "administrator", "123")//连接服务器
    
    
    
            /// <summary>
            /// 递归-拷贝文件夹及文件
            /// </summary>
            /// <param name="sourceDirectoryUrl">源路径</param>
            /// <param name="copyDirectoryUrl">复制路径</param>
            private void CopyDirectory(string sourceDirectoryUrl, string copyDirectoryUrl)
            {
                try
                {
                    string folderName = sourceDirectoryUrl.Substring(sourceDirectoryUrl.LastIndexOf("\") + 1);
    
                    string desfolderdir = copyDirectoryUrl + "\" + folderName;
    
                    if (copyDirectoryUrl.LastIndexOf("\") == (copyDirectoryUrl.Length - 1))
                    {
                        desfolderdir = copyDirectoryUrl + folderName;
                    }
    
                    string[] filenames = Directory.GetFileSystemEntries(sourceDirectoryUrl);
    
                    foreach (string file in filenames)// 遍历所有的文件和目录
                    {
                        if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
                        {
    
                            string currentdir = desfolderdir + "\" + file.Substring(file.LastIndexOf("\") + 1);
                            if (!Directory.Exists(currentdir))
                            {
                                Directory.CreateDirectory(currentdir);
                            }
    
                            CopyDirectory(file, desfolderdir);
                        }
                        else // 否则直接copy文件
                        {
                            string srcfileName = file.Substring(file.LastIndexOf("\") + 1);
    
                            srcfileName = desfolderdir + "\" + srcfileName;
    
                            if (!Directory.Exists(desfolderdir))
                            {
                                Directory.CreateDirectory(desfolderdir);
                            }
    
                            File.Copy(file, srcfileName, true);
    
                        }
                    }//foreach 
    
                    MessageBox.Show("文件同步成功!");
    
                }
                catch(Exception ex)
                {
                    MessageBox.Show("文件同步失败! 错误提示:"+ex.Message);
                }
                finally
                {
                    this.Dispose();
                    this.Close();
                }
    
               
    
            }
    
            //文件同步按钮
            private void synchronization_Btn_Click(object sender, EventArgs e)
            {
                //连接远程服务器
                if (ConnectServer(@"\192.168.0.150文件同步测试区", "lgq0821", "123456"))
                {
                    //同步文件
                    CopyDirectory(@"F:文件同步测试区A服务器工具包", @"\192.168.0.150文件同步测试区");
                }
                else
                {
                    MessageBox.Show("身份验证失败!");
                }
    
            }
    复制代码
  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/mengcheng9300/p/11690832.html
Copyright © 2011-2022 走看看