检测新创建的文件,只检测编辑的文件

时间:2011-04-04 20:31:18

标签: c# .net interrupt

我正在尝试在编辑或创建发生的那一刻及时读取文件。还有另一块硬件可以创建文件到我希望访问的文件夹(及时)。

如何使用C#.net检测创建新编辑或创建的文件。我不想定期轮询该文件夹,因为机器可能在轮询时间间隔之间多次写入。即我想避免:

  • 文件1(已创建)上午10:00:04
  • 轮询文件1(没有数据丢失)10:00:05 AM
  • 文件1(用新数据覆盖)10:00:07 AM
  • 轮询文件1(没有数据丢失)10:00:10 AM
  • 文件1(用新数据覆盖)10:00:12 AM
  • 文件1(用新数据覆盖)10:00:14 AM
  • 投票文件1(10:00:12 AM数据丢失)10:00:15 AM

3 个答案:

答案 0 :(得分:6)

很简单,请使用FileSystemWatcher

答案 1 :(得分:5)

我认为FileSystemWatcher课程会为您提供所需的内容。

答案 2 :(得分:4)

您可以使用FileSystemWatcher课程。它允许您查看特定目录(您还可以对文件类型应用过滤器),如果文件已更改,则将引发事件。

这里有msdn的示例代码:

// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";

// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);

// Begin watching.
watcher.EnableRaisingEvents = true;

其中OnChangedOnRenamed是您的逻辑事件处理程序。