使用C#将文件移动到另一个文件夹

时间:2014-06-13 07:22:09

标签: c# file-io directory

我的源路径为C:\doc\,其中包含pdf文件。 我想要做的是创建一个应用程序,每隔一段时间检查C:\doc\,然后自动将文件从该文件夹移动到另一个位置,而不是每次我想移动文件时都单击应用程序。我希望当文件到达c:\doc时,应用程序会发现一个或多个文件,并自动将它们移动到例如C:\doc2\。我希望你理解我的意思。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

要检测文件何时添加到文件夹,请使用FileSystemWatcher

要移动文件,请使用File.Move方法。

也许是这样的?

public class Program
{
    public static void Main(string[] args)
    {
        var source = @"C:\doc";
        var target = @"C:\doc2";
        while (true)
        {
            using (var folderWatcher = new FileSystemWatcher(source))
            {
                folderWatcher.Filter = "*.*";

                Console.WriteLine("Watching " + source);
                var change = folderWatcher.WaitForChanged(WatcherChangeTypes.Created, 1000 * 60);

                if (!change.TimedOut)
                {
                    Console.WriteLine("File detected: " + change.Name);
                    Console.WriteLine("Moving to: " + target);
                    File.Move(Path.Combine(source, change.Name), Path.Combine(target, change.Name));
                }
            }
        }
    }
}

答案 1 :(得分:1)

您可以创建一个在后台运行的Windows Service。你的工作就是对其进行编程,使服务每隔x次复制一次文件。

this文件所示:

  

Microsoft Windows服务(以前称为NT服务)使您能够创建在其自己的Windows会话中运行的长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动,也不会显示任何用户界面。

因此,无需任何人点击应用程序即可运行您的服务,它将在后台运行。

Here是Microsoft关于如何创建此类服务的小型教程。


另一种选择是使用计划任务。这样可以及时执行您的程序。然后,您不必将时间编入程序,因为计划任务会为您执行此操作。

此处还有一件事,就是您可以手动运行任务。这允许在需要时立即执行,而不是仅在此编程的时间跨度上执行的服务。

您仍然需要编写应用程序,但控制台应用程序现在可以执行,而不是创建服务。您可以使用File.Move函数,如另一个答案中所述。

有关如何创建计划任务的信息,请参阅documentation