在文件夹中查找文件,获取&比较c#

时间:2016-07-06 20:03:22

标签: c# directory filesystemwatcher datecreated

我需要监控文件夹,查看是否已上传文件。然后我需要获得创建日期&已上载的最新文件的时间,并查看文件的创建时间是否超过当前时间30分钟。我已经使用FileSystemWatcher来监视文件夹,但是我应该如何继续查找并将最新文件与当前时间进行比较。

private void watch()
{
  FileSystemWatcher watcher = new FileSystemWatcher();
  watcher.Path = path;
  watcher.NotifyFilter = NotifyFilters.LastWrite;
  NotifyFilters.DirectoryName;
  watcher.Filter = "*.*";
  watcher.Changed += new FileSystemEventHandler(OnChanged);
  watcher.EnableRaisingEvents = true;
}

Private void OnChanged(object source, FileSystemEventArgs e)
{
  //Copies file to another directory.
}

我怎样才能在c#中这样做。请帮忙!

2 个答案:

答案 0 :(得分:1)

根据您的评论,我无法确定您需要使用FileSystemWatcher的原因。您说您每1小时有一个计划任务需要检查目录以查找文件的创建时间。所以在这项任务中,只需执行以下操作:

// Change @"C:\" to your upload directory
string[] files = Directory.GetFiles(@"C:\");

var oldestFile = files.OrderBy(path => File.GetCreationTime(path)).FirstOrDefault();
if (oldestFile != null)
{
    var oldestDate = File.GetCreationTime(oldestFile);

    if (DateTime.Now.Subtract(oldestDate).TotalMinutes > 30)
    {
        // Do Something
    }
}

要过滤特定文件,请使用重载:

string[] files = Directory.GetFiles(@"C:\", "*.pdf");

答案 1 :(得分:1)

在OnChanged事件中:

    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        var currentTime = DateTime.Now;
        var file = new FileInfo(e.FullPath);
        var createdDateTime = file.CreationTime;
        var span = createdDateTime.Subtract(currentTime);

        if (span.Minutes > 30)
        {
            // your code
        }
    }

要过滤特定文件扩展名(例如pdf),您可以使用:

if (file.Extension == ".pdf")
{

}