FileSystemWatcher::Filter Property
Gets or sets the filter string used to determine what files are monitored in a directory.
Assembly: System (in System.dll)
public: [IODescriptionAttribute("FSW_Filter")] [TypeConverterAttribute("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] [SettingsBindableAttribute(true)] property String^ Filter { String^ get(); void set(String^ value); }
To watch changes in all files, set the Filter property to an empty string (""). To watch a specific file, set the Filter property to the file name. For example, to watch for changes in the file MyDoc.txt, set the Filter property to "MyDoc.txt". You can also watch for changes in a certain type of file. For example, to watch for changes in any text files, set the Filter property to "*.txt". Use of multiple filters such as "*.txt|*.doc" is not supported.
The Filter property can be changed after the FileSystemWatcher object has started receiving events.
For more information about filtering out unwanted notifications, see the NotifyFilter, IncludeSubdirectories, and InternalBufferSize properties.
Filter accepts wildcards for matching files, as shown in the following examples.
Filter string | Watches the following files |
|---|---|
*.* | All files (default). An empty string ("") also watches all files. |
*.txt | All files with a "txt" extension. |
*recipe.doc | All files ending in "recipe" with a "doc" extension. |
win*.xml | All files beginning with "win" with an "xml" extension. |
Sales*200?.xls | Matches the following: Sales July 2001.xlsSales Aug 2002.xlsSales March 2004.xls but does not match: Sales Nov 1999.xls |
MyReport.Doc | Watches only MyReport.doc |
The following example creates a 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 System.Diagnostics and System.IO namespaces for this example.
#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