文件迁移-复制粘贴文件到指定路径

文件迁移

从A路径迁移到B路径,迁移所有文件夹 所有类型文件,每日执行定时任务,将每次新变化的文件迁移到文件夹且重命名

        string hostname = Dns.GetHostName();//计算机名称

        //Environment.UserName;//获取当前用户

        try
        {
            using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Digtial_SCM"].ConnectionString))
            {
                string sql = @"SELECT     [CopyPath] ,[PastePath],isnull([Last_Run_Time],'19990909') [Last_Run_Time]  FROM [Digtial_SCM].[dbo].[SYS_File_Migration_Setting]  where [Host_Name]='" + hostname + @"'";
                DataTable dt = new DataTable();
                var q1 = sqlConnection.ExecuteReader(sql);
                dt.Load(q1);
                for (var i = 0; i < dt.Rows.Count; i++) {
                    var copyPath = dt.Rows[i]["CopyPath"].ToString();
                    var pastePath = dt.Rows[i]["PastePath"].ToString();
                    DateTime lastRunTime = DateTime.Parse(dt.Rows[0]["Last_Run_Time"].ToString());
                    List<FileInfo> lst = new List<FileInfo>();//所有的文件

                    List< FileInfo > files= GetFile(lst,copyPath, "", lastRunTime);
                    for (var x = 0; x < files.Count; x++) {
                        // CopyToFile(copyPath, pastePath, lastRunTime);
                        //目标整体路径 
                        var targetField = pastePath + files[x].FullName.Substring(copyPath.Length, files[x].FullName.Length - copyPath.Length);//目标文件完整url

                        SetFile(files[x], targetField);
                    }
                }
            
                 //if (File.Exists(copyPath))//必须判断要复制的文件是否存在
                 //    {
                 //    File.Copy(copyPath, pastePath, true);//三个参数分别是源文件路径,存储路径,若存储路径有相同文件是否替换
                 //    }
            }
        }
        catch (Exception ex)
        {
        
        }
    } 
    public static void SetFile(FileInfo files,string targetField)
    {
        var sourceName = files.FullName;
        //文件不用新的文件名,就用原文件文件名
        string fileName = Path.GetFileName(sourceName);
        可以选择给文件换个新名字
        //string fileName = string.Format("{0}.{1}", "newFileText", "txt");

       var targetPath = targetField.Replace(files.Name, "").TrimEnd('\\');//目标文件路径


        if (!Directory.Exists(targetPath))
        {
            Directory.CreateDirectory(targetPath);
        }

     //   string targetPath = Path.Combine(pastePath, fileName);
        FileInfo existedFile = new FileInfo(targetField);//要copy的文件                    
        if (existedFile.Exists)//如果存在该文件 修改文件名称===Directory.Exists(targetPath)
        {
            targetField = Path.Combine(targetPath, fileName.Split('.')[0] + "_" + files.LastWriteTime.ToLongDateString().Replace("/", "") + "_" + files.LastWriteTime.ToLongTimeString().Replace(":", "") + "." + fileName.Split('.')[1]);
        }
        //Copy到新文件下
        FileInfo file = new FileInfo(sourceName);//要copy的文件
        if (file.Exists)
        {   
            try
            {
                file.CopyTo(targetField, false);//复制粘贴            //true 覆盖已存在的同名文件,false不覆盖
                using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Digtial_SCM"].ConnectionString))
                {
                    string sql = @"  update [Digtial_SCM].[dbo].[SYS_File_Migration_Setting] set [Last_Run_Time]=GETDATE() where [Host_Name]='" + Dns.GetHostName() + @"'";
                    sqlConnection.ExecuteReader(sql);
                }
            }
            catch (Exception ex)
            {
            }
        }
    }

    /// <summary>
    /// 获得目录下所有文件或指定文件类型文件(包含所有子文件夹)
    /// </summary>
    /// <param name="path">文件夹路径</param>
    /// <param name="extName">扩展名可以多个 例如 .mp3.wma.rm</param>
    /// <returns>List<FileInfo></returns>
    public static List<FileInfo> GetFile(List<FileInfo> lst, string path, string extName, DateTime lastRunTime)
    {
        try
        {
            string[] dir = Directory.GetDirectories(path); //文件夹列表   
            DirectoryInfo fdir = new DirectoryInfo(path);
            FileInfo[] file = fdir.GetFiles();
            //FileInfo[] file = Directory.GetFiles(path); //文件列表   
            if (file.Length != 0 || dir.Length != 0) //当前目录文件或文件夹不为空                   
            {
                foreach (FileInfo f in file.Reverse()) //FileInfo f in file 显示当前目录所有文件   Reverse反转过来查找  
                {
                    //if (extName.ToLower().IndexOf(f.Extension.ToLower()) >= 0)
                    //{
                    if (DateTime.Parse(f.LastWriteTime.ToString()) > lastRunTime)// 文件夹内时间大于最后一次run程序时间的文件
                    {
                        lst.Add(f);
                    }
                    //}
                }
                foreach (string d in dir)
                {
                    GetFile(lst, d, extName, lastRunTime);//递归   
                }
            }
            return lst;
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }](这里写自定义目录标题)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值