• 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("身份验证失败!");
                }
    
            }
    复制代码
  • 相关阅读:
    详细的解说public,protected,Default和private的权限问题
    谈谈java中静态变量与静态方法在有继承关系的两个类中调用
    谈谈java中成员变量与成员方法继承的问题
    谈谈嵌套for循环的理解
    JAVA基础细谈
    Css的使用细谈
    Hibernate映射
    hibernate基本
    struts2
    s:form标签
  • 原文地址:https://www.cnblogs.com/mengcheng9300/p/11690832.html
Copyright © 2020-2023  润新知