一些升级到我的CopyFiles函数C#

时间:2014-09-18 06:47:12

标签: c# file-io progress-bar messagebox

我设法为我的Windows窗体程序提供了一个函数,它将文件从一个目录复制到另一个目录,并且只要我的程序在正确的目录中(该部分确实存在),就不需要确切的目录路径重要)。

我需要升级我在程序中使用的CopyFile函数,以便它再做两件事:

  1. 使用dir1。
  2. 中的文件覆盖dir2中的文件
  3. 让用户知道该功能完成了它的工作(通过附加progess bar或者更简单的方式,如带有自定义文本的Windows消息框)。
  4. 无论如何,那是我的代码:

          private static void CopyFiles(string source, string destiny, string pattern = "*.*")
        {
            DirectoryInfo dir1 = new DirectoryInfo(source);
            DirectoryInfo dir2 = new DirectoryInfo(destiny);
    
            if (!dir1.Exists)
                throw new ArgumentException(source);
            else
            {
                if (!dir2.Exists)
                    dir2.Create();
    
                FileInfo[] files = dir1.GetFiles(pattern);
    
                foreach (var item in files)
                {
                    item.CopyTo(Path.Combine(dir2.FullName, item.Name));
                }
            }
        }
    
             static void Main(string[] args)
        {
            CopyFiles(@".\FolderI\FolderII\", @".\FolderA\FolderB","a.*");
        }
    

1 个答案:

答案 0 :(得分:2)

CopyTo有一个覆盖,它接受一个布尔表示是否覆盖文件

item.CopyTo(Path.Combine(dir2.FullName, item.Name), True);

并将方法的返回类型更改为布尔值,可以说明它是否成功

private static bool CopyFiles(string source, string destiny, string pattern = "*.*")

... return True

如果有任何错误(提示:Try-Catch)或其他任何错误,您需要更新代码以返回false