FileSystemWatcher::Changed Event
Occurs when a file or directory in the specified Path is changed.
Assembly: System (in System.dll)
The Changed event is raised when changes are made to the size, system attributes, last write time, last access time, or security permissions of a file or directory in the directory being monitored.
Note |
|---|
Common file system operations might raise more than one event. For example, when a file is moved from one directory to another, several OnChanged and some OnCreated and OnDeleted events might be raised. Moving a file is a complex operation that consists of multiple simple operations, therefore raising multiple events. Likewise, some applications (for example, antivirus software) might cause additional file system events that are detected by FileSystemWatcher. |
Use NotifyFilter to restrict the number of notifications raised when this event is handled.
Note |
|---|
The Changed event is raised unexpectedly when a file is renamed, but is not raised when a directory is renamed. To watch for renaming, use the Renamed event. |
Note |
|---|
The order in which the Changed event is raised in relation to the other FileSystemWatcher events may change when the SynchronizingObject property is not null. |
The following example uses the Changed event to display the file path to the console whenever the watched file is changed.
#using <System.dll> using namespace System; using namespace System::IO; using namespace System::Security::Permissions; 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' ); return 0; } }; int main() { Watcher::run(); }
Available since 1.1
