FileSystemWatcher.Changed 이벤트

정의

지정된 Path에 있는 파일이나 디렉터리가 변경될 경우에 발생합니다.Occurs when a file or directory in the specified Path is changed.

public:
 event System::IO::FileSystemEventHandler ^ Changed;
public event System.IO.FileSystemEventHandler Changed;
[System.IO.IODescription("FSW_Changed")]
public event System.IO.FileSystemEventHandler Changed;
[System.IO.IODescription("Occurs when a file/directory change matches the filter")]
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 OnCreatedOnDeleted 이벤트가 발생할 수 있습니다.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.

참고

다른 FileSystemWatcher 이벤트와 관련 하 여 Changed 이벤트가 발생 하는 순서는 SynchronizingObject 속성이 null되지 않을 때 변경 될 수 있습니다.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.

적용 대상

추가 정보