FileSystemWatcher.Changed FileSystemWatcher.Changed FileSystemWatcher.Changed FileSystemWatcher.Changed Event

定義

指定した Path のファイルまたはディレクトリが変更されたときに発生します。Occurs when a file or directory in the specified Path is changed.

public:
 event System::IO::FileSystemEventHandler ^ Changed;
[System.IO.IODescription("Occurs when a file/directory change matches the filter")]
[System.IO.IODescription("FSW_Changed")]
public event System.IO.FileSystemEventHandler Changed;
member this.Changed : System.IO.FileSystemEventHandler 
Public Custom Event Changed As FileSystemEventHandler 
属性

次の例ではChanged 、イベントを使用して、監視対象のファイルが変更されるたびにコンソールへのファイルパスを表示します。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();
}
using System;
using System.IO;
using System.Security.Permissions;

public class Watcher
{
    public static void Main()
    {
        Run();
    }

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    private static void Run()
    {
        string[] args = 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.
        using (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 += OnChanged;
            watcher.Created += OnChanged;
            watcher.Deleted += OnChanged;
            watcher.Renamed += 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: {e.OldFullPath} renamed to {e.FullPath}");
}
Imports System.IO
Imports System.Security.Permissions

Public Class Watcher

    Public Shared Sub Main()

        Run()

    End Sub

    <PermissionSet(SecurityAction.Demand, Name:="FullTrust")>
    Private Shared Sub Run()

        Dim args() As String = 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.
        Using 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 Using
    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: {e.OldFullPath} renamed to {e.FullPath}")
    End Sub

End Class

注釈

イベントChangedは、監視されているディレクトリ内のファイルまたはディレクトリのサイズ、システム属性、最終書き込み時刻、最終アクセス時刻、またはセキュリティアクセス許可が変更されたときに発生します。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.

注意

一般的なファイルシステム操作では、複数のイベントが発生する可能性があります。Common file system operations might raise more than one event. たとえば、あるディレクトリから別のディレクトリにファイルを移動すると、 OnChangedいくつOnCreatedかのOnDeletedイベントとイベントが発生する可能性があります。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. 同様に、一部のアプリケーション (ウイルス対策ソフトウェアなど) によって、によってFileSystemWatcher検出された追加のファイルシステムイベントが発生する可能性があります。Likewise, some applications (for example, antivirus software) might cause additional file system events that are detected by FileSystemWatcher.

このNotifyFilterイベントが処理されるときに発生する通知の数を制限するには、を使用します。Use NotifyFilter to restrict the number of notifications raised when this event is handled.

注意

このChangedイベントは、ファイルの名前が変更されたときに予期せず発生しますが、ディレクトリの名前が変更されたときには発生しません。The Changed event is raised unexpectedly when a file is renamed, but is not raised when a directory is renamed. 名前の変更を監視するにRenamedは、イベントを使用します。To watch for renaming, use the Renamed event.

注意

Changed他のFileSystemWatcher イベントにnull関連してイベントが発生する順序は、プロパティがではない場合に変更される可能性があります。SynchronizingObjectThe order in which the Changed event is raised in relation to the other FileSystemWatcher events may change when the SynchronizingObject property is not null.

適用対象

こちらもご覧ください