Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

FileSystemWatcher.Changed Event

Occurs when a file or directory in the specified Path is changed.

[Visual Basic]
Public Event Changed As FileSystemEventHandler
[C#]
public event FileSystemEventHandler Changed;
[C++]
public: __event FileSystemEventHandler* Changed;

[JScript] In JScript, you can handle the events defined by a class, but you cannot define your own.

Event Data

The event handler receives an argument of type FileSystemEventArgs containing data related to this event. The following FileSystemEventArgs properties provide information specific to this event.

Property Description
ChangeType Gets the type of directory event that occurred.
FullPath Gets the fully qualifed path of the affected file or directory.
Name Gets the name of the affected file or directory.

Remarks

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, anti-virus 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.

Example

[Visual Basic] 
Public Class Watcher
    
    Public Shared Sub Main()
        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


[C#] 
public class Watcher
{

    public static void Main()
    {

        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);
    }
}


[C++] 
public __gc class Watcher
{
public:
    // 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(S"File: {0} {1}", e->FullPath, __box(e->ChangeType));
    }

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


int main()
{

    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(S"Usage: Watcher.exe (directory)");
        return 0;
    }

    // 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 = static_cast<NotifyFilters>( NotifyFilters::LastAccess | NotifyFilters::LastWrite 
        | NotifyFilters::FileName | NotifyFilters::DirectoryName );
    // Only watch text files.
    watcher->Filter = S"*.txt";

    // Add event handlers.
    watcher->Changed += new FileSystemEventHandler(0, Watcher::OnChanged);
    watcher->Created += new FileSystemEventHandler(0, Watcher::OnChanged);
    watcher->Deleted += new FileSystemEventHandler(0, Watcher::OnChanged);
    watcher->Renamed += new RenamedEventHandler(0, Watcher::OnRenamed);

    // Begin watching.
    watcher->EnableRaisingEvents = true;

    // Wait for the user to quit the program.
    Console::WriteLine(S"Press \'q\' to quit the sample.");
    while(Console::Read()!='q');
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows NT Server 4.0, Windows NT Workstation 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

FileSystemWatcher Class | FileSystemWatcher Members | System.IO Namespace | NotifyFilter | OnChanged | FileSystemEventArgs | FileSystemEventHandler

Show:
© 2014 Microsoft