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