FileSystemWatcher.Changed 事件
当更改指定 Path 中的文件和目录时发生。
**命名空间:**System.IO
**程序集:**System(在 system.dll 中)
语法
声明
Public Event Changed As FileSystemEventHandler
用法
Dim instance As FileSystemWatcher
Dim handler As FileSystemEventHandler
AddHandler instance.Changed, handler
public event FileSystemEventHandler Changed
public:
event FileSystemEventHandler^ Changed {
void add (FileSystemEventHandler^ value);
void remove (FileSystemEventHandler^ value);
}
/** @event */
public void add_Changed (FileSystemEventHandler value)
/** @event */
public void remove_Changed (FileSystemEventHandler value)
JScript 支持使用事件,但不支持进行新的声明。
备注
当对所监视的目录中的文件或目录的大小、系统属性、上次写入时间、上次访问时间或安全权限进行更改时,将引发 Changed 事件。
提示
公共文件系统操作可能会引发多个事件。例如,将文件从一个目录移到另一个目录时,可能会引发若干 OnChanged 以及一些 OnCreated 和 OnDeleted 事件。移动文件是一个包含多个简单操作的复杂操作,因此会引发多个事件。同样,有些应用程序(例如,防病毒软件)可能会导致可由 FileSystemWatcher 检测到的其他文件系统事件。
使用 NotifyFilter 限制处理此事件时引发的通知数。
提示
重命名文件时意外引发 Changed 事件,但重命名目录时不会引发它。若要监视重命名,请使用 Renamed 事件。
示例
Public Class Watcher
Public Shared Sub Main()
Run()
End Sub
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
Private Shared Sub Run
Dim args() As String = System.Environment.GetCommandLineArgs()
' If a directory is not specified, exit the program.
If args.Length <> 2 Then
' Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)")
Return
End If
' Create a new FileSystemWatcher and set its properties.
Dim watcher As 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 Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
' Only watch text files.
watcher.Filter = "*.txt"
' Add event handlers.
AddHandler watcher.Changed, AddressOf OnChanged
AddHandler watcher.Created, AddressOf OnChanged
AddHandler watcher.Deleted, AddressOf OnChanged
AddHandler watcher.Renamed, AddressOf OnRenamed
' Begin watching.
watcher.EnableRaisingEvents = True
' Wait for the user to quit the program.
Console.WriteLine("Press 'q' to quit the sample.")
While Chr(Console.Read()) <> "q"c
End While
End Sub
' Define the event handlers.
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
' Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " & e.FullPath & " " & e.ChangeType)
End Sub
Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
' Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath)
End Sub
End Class
public class Watcher
{
public static void Main()
{
Run();
}
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
string[] args = System.Environment.GetCommandLineArgs();
// If a directory is not specified, exit program.
if(args.Length != 2)
{
// Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)");
return;
}
// 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;
// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}
// 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);
}
}
public ref class Watcher
{
private:
// Define the event handlers.
static void OnChanged( Object^ /*source*/, FileSystemEventArgs^ e )
{
// Specify what is done when a file is changed, created, or deleted.
Console::WriteLine( "File: {0} {1}", e->FullPath, e->ChangeType );
}
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 );
}
public:
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
int static run()
{
array<String^>^args = System::Environment::GetCommandLineArgs();
// If a directory is not specified, exit program.
if ( args->Length != 2 )
{
// Display the proper way to call the program.
Console::WriteLine( "Usage: Watcher.exe (directory)" );
return 0;
}
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher^ watcher = gcnew FileSystemWatcher;
watcher->Path = args[ 1 ];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher->NotifyFilter = static_cast<NotifyFilters>(NotifyFilters::LastAccess |
NotifyFilters::LastWrite | NotifyFilters::FileName | NotifyFilters::DirectoryName);
// Only watch text files.
watcher->Filter = "*.txt";
// Add event handlers.
watcher->Changed += gcnew FileSystemEventHandler( Watcher::OnChanged );
watcher->Created += gcnew FileSystemEventHandler( Watcher::OnChanged );
watcher->Deleted += gcnew FileSystemEventHandler( Watcher::OnChanged );
watcher->Renamed += gcnew RenamedEventHandler( Watcher::OnRenamed );
// Begin watching.
watcher->EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console::WriteLine( "Press \'q\' to quit the sample." );
while ( Console::Read() != 'q' )
;
}
};
int main() {
Watcher::run();
}
public class Watcher
{
public static void main(String[] args1)
{
Run();
}
/** @attribute PermissionSet(SecurityAction.Demand, Name="FullTrust")
*/
public static void Run()
{
String args[] = System.Environment.GetCommandLineArgs();
// If a directory is not specified, exit program.
if (args.length != 2) {
// Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)");
return;
}
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.set_Path(args[1]);
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories.
*/
watcher.set_NotifyFilter
(NotifyFilters.LastAccess |NotifyFilters.LastWrite |
NotifyFilters.FileName | NotifyFilters.DirectoryName);
// Only watch text files.
watcher.set_Filter("*.txt");
// Add event handlers.
watcher.add_Changed(new FileSystemEventHandler(OnChanged));
watcher.add_Created(new FileSystemEventHandler(OnChanged));
watcher.add_Deleted(new FileSystemEventHandler(OnChanged));
watcher.add_Renamed(new RenamedEventHandler(OnRenamed));
// Begin watching.
watcher.set_EnableRaisingEvents(true);
// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while ((Console.Read() != 'q')) {
}
}
// 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.get_FullPath() + " "
+ e.get_ChangeType()));
} //OnChanged
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.get_OldFullPath(),e.get_FullPath());
} //OnRenamed
} //Watcher
平台
Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
请参见
参考
FileSystemWatcher 类
FileSystemWatcher 成员
System.IO 命名空间
FileSystemWatcher.NotifyFilter 属性
OnChanged
FileSystemEventArgs 类
FileSystemEventHandler 委托