この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

FileSystemWatcher クラス

 

公開日: 2016年10月

ファイル システムの変更通知を待機し、ディレクトリまたはディレクトリ内のファイルが変更されたときにイベントを発生させます。

この型の .NET Framework ソース コードを参照するには、参照ソースをご覧ください。

名前空間:   System.IO
アセンブリ:  System (System.dll 内)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.IO.FileSystemWatcher

[IODescriptionAttribute("FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class FileSystemWatcher : Component, ISupportInitialize

名前説明
System_CAPS_pubmethodFileSystemWatcher()

FileSystemWatcher クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodFileSystemWatcher(String)

監視するディレクトリを指定して、FileSystemWatcher クラスの新しいインスタンスを初期化します。

System_CAPS_pubmethodFileSystemWatcher(String, String)

FileSystemWatcher クラスの新しいインスタンスを、監視するディレクトリとファイルの種類を指定して初期化します。

名前説明
System_CAPS_protpropertyCanRaiseEvents

コンポーネントがイベントを発生させることができるかどうかを示す値を取得します。(Component から継承されます。)

System_CAPS_pubpropertyContainer

取得、 IContainer を含む、 Componentです。(Component から継承されます。)

System_CAPS_protpropertyDesignMode

示す値を取得するかどうか、 Component デザイン モードになっています。(Component から継承されます。)

System_CAPS_pubpropertyEnableRaisingEvents

コンポーネントが有効かどうかを示す値を取得または設定します。

System_CAPS_protpropertyEvents

これに関連付けられているイベント ハンドラーの一覧を取得 Componentします。(Component から継承されます。)

System_CAPS_pubpropertyFilter

ディレクトリで監視するファイルを決定するために使用するフィルター文字列を取得または設定します。

System_CAPS_pubpropertyIncludeSubdirectories

指定したパスのサブディレクトリを監視するかどうかを示す値を取得または設定します。

System_CAPS_pubpropertyInternalBufferSize

内部バッファーのサイズ (バイト単位) を取得または設定します。

System_CAPS_pubpropertyNotifyFilter

ウォッチする変更の種類を取得または設定します。

System_CAPS_pubpropertyPath

ウォッチするディレクトリのパスを取得または設定します。

System_CAPS_pubpropertySite

FileSystemWatcherISite を取得または設定します。(Component.Site をオーバーライドします。)

System_CAPS_pubpropertySynchronizingObject

ディレクトリ変更の結果として発行されるイベント ハンドラー呼び出しをマーシャリングするために使用するオブジェクトを取得または設定します。

名前説明
System_CAPS_pubmethodBeginInit()

フォームまたは別のコンポーネントで使用する FileSystemWatcher の初期化を開始します。 初期化は実行時に発生します。

System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodDispose()

Component によって使用されているすべてのリソースを解放します。(Component から継承されます。)

System_CAPS_protmethodDispose(Boolean)

FileSystemWatcher によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。(Component.Dispose(Boolean) をオーバーライドします。)

System_CAPS_pubmethodEndInit()

フォームまたは別のコンポーネントで使用する FileSystemWatcher の初期化を終了します。 初期化は実行時に発生します。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

Component がガベージ コレクションによって回収される前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。(Component から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodGetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。(Component から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone(Boolean)

現在の簡易コピーを作成MarshalByRefObjectオブジェクト。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodOnChanged(FileSystemEventArgs)

Changed イベントを発生させます。

System_CAPS_protmethodOnCreated(FileSystemEventArgs)

Created イベントを発生させます。

System_CAPS_protmethodOnDeleted(FileSystemEventArgs)

Deleted イベントを発生させます。

System_CAPS_protmethodOnError(ErrorEventArgs)

Error イベントを発生させます。

System_CAPS_protmethodOnRenamed(RenamedEventArgs)

Renamed イベントを発生させます。

System_CAPS_pubmethodToString()

返します。、 String の名前を含む、 Component, 、存在する場合。 このメソッドはオーバーライドできません。(Component から継承されます。)

System_CAPS_pubmethodWaitForChanged(WatcherChangeTypes)

監視する変更の種類を指定して、発生した変更についての固有な情報を格納する構造体を返す同期メソッド。

System_CAPS_pubmethodWaitForChanged(WatcherChangeTypes, Int32)

監視する変更の種類とタイムアウトまでの待機時間 (ミリ秒単位) を指定して、発生した変更についての固有な情報を格納する構造体を返す同期メソッド。

名前説明
System_CAPS_pubeventChanged

指定した Path のファイルまたはディレクトリが変更されたときに発生します。

System_CAPS_pubeventCreated

指定した Path のファイルまたはディレクトリが作成されたときに発生します。

System_CAPS_pubeventDeleted

指定した Path のファイルまたはディレクトリが削除されたときに発生します。

System_CAPS_pubeventDisposed

呼び出しによってコンポーネントが破棄されるときに発生、 Dispose メソッドです。(Component から継承されます。)

System_CAPS_pubeventError

FileSystemWatcher のインスタンスが変更の監視を続けられない場合、または内部バッファー オーバーフローの場合に発生します。

System_CAPS_pubeventRenamed

指定した Path のファイルまたはディレクトリの名前が変更されたときに発生します。

System_CAPS_noteメモ

To view the .NET Framework source code for this type, see the Reference Sourcehttp://referencesource.microsoft.com/#System/services/io/system/io/FileSystemWatcher.cs#a9eb0249dc928b09. You can browse through the source code online, download the reference for offline viewing, and step through the sources (including patches and updates) during debugging; see instructionshttp://referencesource.microsoft.com/.

Use T:System.IO.FileSystemWatcher to watch for changes in a specified directory. You can watch for changes in files and subdirectories of the specified directory. You can create a component to watch files on a local computer, a network drive, or a remote computer.

To watch for changes in all files, set the P:System.IO.FileSystemWatcher.Filter property to an empty string ("") or use wildcards ("*.*"). To watch a specific file, set the P:System.IO.FileSystemWatcher.Filter property to the file name. For example, to watch for changes in the file MyDoc.txt, set the P:System.IO.FileSystemWatcher.Filter property to "MyDoc.txt". You can also watch for changes in a certain type of file. For example, to watch for changes in text files, set the P:System.IO.FileSystemWatcher.Filter property to "*.txt".

There are several types of changes you can watch for in a directory or file. For example, you can watch for changes in Attributes, the LastWrite date and time, or the Size of files or directories. This is done by setting the P:System.IO.FileSystemWatcher.NotifyFilter property to one of the T:System.IO.NotifyFilters values. For more information on the type of changes you can watch, see T:System.IO.NotifyFilters.

You can watch for renaming, deletion, or creation of files or directories. For example, to watch for renaming of text files, set the P:System.IO.FileSystemWatcher.Filter property to "*.txt" and call the M:System.IO.FileSystemWatcher.WaitForChanged(System.IO.WatcherChangeTypes) method with a F:System.IO.WatcherChangeTypes.Renamed specified for its parameter.

The Windows operating system notifies your component of file changes in a buffer created by the T:System.IO.FileSystemWatcher. If there are many changes in a short time, the buffer can overflow. This causes the component to lose track of changes in the directory, and it will only provide blanket notification. Increasing the size of the buffer with the P:System.IO.FileSystemWatcher.InternalBufferSize property is expensive, as it comes from non-paged memory that cannot be swapped out to disk, so keep the buffer as small yet large enough to not miss any file change events. To avoid a buffer overflow, use the P:System.IO.FileSystemWatcher.NotifyFilter and P:System.IO.FileSystemWatcher.IncludeSubdirectories properties so you can filter out unwanted change notifications.

For a list of initial property values for an instance of T:System.IO.FileSystemWatcher, see the M:System.IO.FileSystemWatcher.#ctor constructor.

Please note the following when using the T:System.IO.FileSystemWatcher class.

  • Hidden files are not ignored.

  • In some systems, T:System.IO.FileSystemWatcher reports changes to files using the short 8.3 file name format. For example, a change to "LongFileName.LongExtension" could be reported as "LongFil~.Lon".

  • This class contains a link demand and an inheritance demand at the class level that applies to all members. A T:System.Security.SecurityException is thrown when either the immediate caller or the derived class does not have full-trust permission. For details about security demands, see Link Demands.

  • The maximum size you can set for the P:System.IO.FileSystemWatcher.InternalBufferSize property for monitoring a directory over the network is 64 KB.

System_CAPS_noteメモ

Running T:System.IO.FileSystemWatcher on Windows 98 is not supported.

The operating system and T:System.IO.FileSystemWatcher object interpret a cut-and-paste action or a move action as a rename action for a folder and its contents. If you cut and paste a folder with files into a folder being watched, the T:System.IO.FileSystemWatcher object reports only the folder as new, but not its contents because they are essentially only renamed.

To be notified that the contents of folders have been moved or copied into a watched folder, provide M:System.IO.FileSystemWatcher.OnChanged(System.IO.FileSystemEventArgs) and M:System.IO.FileSystemWatcher.OnRenamed(System.IO.RenamedEventArgs) event handler methods as suggested in the following table.

Event Handler

Events Handled

Performs

OnChanged

Changed, Created, Deleted

Report changes in file attributes, created files, and deleted files.

OnRenamed

Renamed

List the old and new paths of renamed files and folders, expanding recursively if needed.

Note that several factors can affect which file system change events are raised, as described by the following:

  • Common file system operations might raise more than one event. For example, when a file is moved from one directory to another, several M:System.IO.FileSystemWatcher.OnChanged(System.IO.FileSystemEventArgs) and some M:System.IO.FileSystemWatcher.OnCreated(System.IO.FileSystemEventArgs) and M:System.IO.FileSystemWatcher.OnDeleted(System.IO.FileSystemEventArgs) 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 T:System.IO.FileSystemWatcher.

  • The T:System.IO.FileSystemWatcher can watch disks as long as they are not switched or removed. The T:System.IO.FileSystemWatcher does not raise events for CDs and DVDs, because time stamps and properties cannot change. Remote computers must have one of the required platforms installed for the component to function properly.

  • If multiple T:System.IO.FileSystemWatcher objects are watching the same UNC path in Windows XP prior to Service Pack 1, or Windows 2000 SP2 or earlier, then only one of the objects will raise an event. On machines running Windows XP SP1 and newer, Windows 2000 SP3 or newer or Windows Server 2003, all T:System.IO.FileSystemWatcher objects will raise the appropriate events.

Note that a T:System.IO.FileSystemWatcher may miss an event when the buffer size is exceeded. To avoid missing events, follow these guidelines:

  • Increase the buffer size by setting the P:System.IO.FileSystemWatcher.InternalBufferSize property.

  • Avoid watching files with long file names, because a long file name contributes to filling up the buffer. Consider renaming these files using shorter names.

  • Keep your event handling code as short as possible.

The following example creates a T:System.IO.FileSystemWatcher to watch the directory specified at run time. The component is set to watch for changes in LastWrite and LastAccess time, the creation, deletion, or renaming of text files in the directory. If a file is changed, created, or deleted, the path to the file prints to the console. When a file is renamed, the old and new paths print to the console.

Use the N:System.Diagnostics and N:System.IO namespaces for this example.

using System;
using System.IO;
using System.Security.Permissions;

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

SecurityPermission

for calling members of T:System.Diagnostics.ProcessStartInfo. Demand value: F:System.Security.Permissions.SecurityAction.LinkDemand; Named Permission Sets: FullTrust.

For a sample that uses the T:System.IO.FileSystemWatcher class, see Using a FileSystemWatcher Component in a Windows Formhttp://code.msdn.microsoft.com/Using-a-FileSystemWatcher-4bc97af4

SecurityPermission

for deriving from the T:System.Diagnostics.ProcessStartInfo class. Demand value: F:System.Security.Permissions.SecurityAction.InheritanceDemand; Named Permission Sets: FullTrust.

.NET Framework
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: