3

可能重复:
C# 获取文件更改事件

我想在使用 C# 达到特定大小时跟踪特定文件大小有没有办法在文件大小更改时添加事件处理程序,或者我是否需要在线程中运行无限进程以不断检查文件大小?谢谢

4

4 回答 4

8

使用FileSystemWatcher监视文件的更改。当它改变时,获取大小。例如:

var fsw = new FileSystemWatcher(@"C:\pathtoyourfile");
fsw.Changed += TheFileChanged;


private void TheFileChanged(object sender, FileSystemEventArgs e)
{
    if (e.ChangeType == WatcherChangeTypes.Changed)
    {
        var info = new FileInfo(e.FullPath);
        var theSize = info.Length;
    }
}

完成监视更改后,请处理 FileSystemWatcher。

于 2012-12-05T14:28:24.650 回答
3

您可以使用 aFileSystemWatcher并处理该Changed事件。然后,您只需要在必要时比较文件大小。

FileSystemWatcher-教程

于 2012-12-05T14:29:07.633 回答
1

您想使用FileSystemWatcher。这可用于在文件更改时引发事件。它的典型用途是

// 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;

然后添加相关EventHandler的s

// Define the event handlers. 
private static void OnChanged(object source, FileSystemEventArgs e)
{
    // Specify what is done when a file is changed, created, or deleted.
   Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
    // Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}

我希望这有帮助。

于 2012-12-05T14:31:18.013 回答
1

使用FileSystemWatcher类和Changed事件。

还有一个很酷的项目,叫做.NET File System Watcher

在此处输入图像描述

于 2012-12-05T14:33:23.627 回答