2015-12-17 2 views
0

Я использую ниже код для просмотра файлов в локальной системе с использованием класса FileSystemWatcher. То, что я хотел бы сделать, - это смотреть только те имена файлов, которые я указываю в ключевых словах (может быть разделенная запятой строка или txt-файл). Пожалуйста, направляйте меня в правильном направлении.FileSystemWatcher специфические файлы с фильтром ключевых слов filename

FileSystemWatcher objWatcher = new FileSystemWatcher(); 
    objWatcher.Filter = "*.*"; 
    objWatcher.Changed += new FileSystemEventHandler(OnChanged); 

    private static void OnChanged(object source, FileSystemEventArgs e) 
    { 
    string strFileExt = getFileExt(e.FullPath); 
    } 

Благодаря & уважением

+0

Посмотрите, поддерживает ли _Filter_ шаблон регулярного выражения. – sln

+2

Взгляните на это http://stackoverflow.com/questions/6965184/how-to-set-filter-for-filesystemwatcher-for-multiple-file-types –

ответ

1

Хотя FileSystemWatcher не поддерживает это, вы можете получить эту функциональность, фильтруя имя файла после того, как событие будет поднято. Вы не сможете использовать фильтр, как «.», но, например, если вы хотите, чтобы все XML и текстовые файлы можно сделать { «.xml», «.txt»}

FileSystemWatcher objWatcher = new FileSystemWatcher(); 
objWatcher.Changed += new FileSystemEventHandler(OnChanged); 

string[] filters = new string[] { "test", "blah", ".exe"}; //this needs to be a member of the class so it can be accessed from the Changed event 

private static void OnChanged(object source, FileSystemEventArgs e) 
{ 
    if (filters.Any(e.FullPath).Contains)) 
    {  
     string strFileExt = getFileExt(e.FullPath); 
    } 
} 

Это должно дать вам основная идея того, как вы можете это сделать.

+0

Спасибо всем, мне хотелось бы отметить более одного ответа. – Robin

0

FileSystemWatcher компонент обеспечивает Path и Filter свойство идентифицировать файлы, которые вы хотите посмотреть. Вы можете использовать подстановочные знаки в свойстве Filter для просмотра нескольких файлов, но помимо этого нет встроенных функций для просмотра произвольного набора файлов одновременно. От Filter property documentation: использование нескольких фильтров, таких как «.txt | .doc» не поддерживается.

Возможно, вам понадобится создать отдельный FileSystemWatcher для каждого из элементов в вашем списке.