C#将文件从一个文件夹复制到另一个文件夹而不复制

C#将文件从一个文件夹复制到另一个文件夹而不复制,c#,C#,我试图复制文件从“源”文件夹到我的“目标”文件夹,没有重复。我无法使用目标文件夹进行比较,因为它最终将从那里被删除。我在这里得到了帮助来创建批处理文件 Robocopy "source" "destination" "*chr.txt*" "*hdr.txt*" /M 使用属性跟踪复制之前的文件。但是我需要用C#来代替。我知道有命令要抄 System.IO.File.Copy(sourceFile, destFile, true); 但我不知道如何具体说明文件名“*chr.txt”并处理重复

我试图复制文件从“源”文件夹到我的“目标”文件夹,没有重复。我无法使用目标文件夹进行比较,因为它最终将从那里被删除。我在这里得到了帮助来创建批处理文件

Robocopy "source" "destination" "*chr.txt*" "*hdr.txt*" /M
使用属性跟踪复制之前的文件。但是我需要用C#来代替。我知道有命令要抄

System.IO.File.Copy(sourceFile, destFile, true);

但我不知道如何具体说明文件名“*chr.txt”并处理重复项。

这里有一个我不久前创建的方法,它对我很有效(除了我刚刚添加的检查重复项部分,还没有测试)。如果它的任何部分不能满足您的需要,请告诉我

private static void CopyDirectory(string from, string to)
{
    var toFileNames = new DirectoryInfo(to)
        .GetFiles()
        .Select(f => f.Name)
        .ToList();

    var directory = new DirectoryInfo(from);
    var files = directory.GetFiles();
    foreach (var file in files)
        if (!toFileNames.Contains(file.Name))
            file.CopyTo(Path.Combine(to, file.Name));

    var subDirectories = directory.GetDirectories();
    foreach (var subDirectory in subDirectories)
    {
        var newDirectory = Directory.CreateDirectory(Path.Combine(to, subDirectory.Name));
        CopyDirectory(subDirectory.FullName, newDirectory.FullName);
    }
}
我需要用C#来代替


您需要使用其他类(
System.IO.Directory
System.IO.Path
)列出感兴趣的文件,然后使用此
System.IO.File.Copy
实际复制它。可能有一些windows调用(基于shell)可以进行复制,就像使用windows资源管理器进行复制一样。我不确定“我无法使用目标文件夹进行比较,因为它最终会从那里被删除”是什么意思???如果您的文件最终从目标文件夹中删除,并且您不想再次从源文件夹复制这些文件,那么您应该维护一个列表(在文本文件或数据库中),类似于所有以前复制的文件的历史记录。这是实现你所需要的唯一可靠的方法。底线是:要么保留实际文件,要么保留历史记录。
Process.Start("robocopy", "source destination chr.txt hdr.txt /M");