2015-12-17 60 views
0

我正在使用下面的代碼來使用FileSystemWatcher類來監視本地系統上的文件。我想要做的只是觀察那些在關鍵字中指定的文件名(可能是逗號分隔的字符串或txt文件)。 請指導我在正確的方向。具有文件名關鍵字的FileSystemWatcher特定文件過濾器

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和TXT文件,你可以做{名爲「.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組件提供了一個PathFilter屬性來確定你想要觀看的文件。您可以在Filter屬性中使用通配符來觀看多個文件,但除此之外,沒有任何內置功能可以同時觀看任意一組文件。從Filter property documentation:不支持使用多個過濾器,如「.txt | .doc」。

您可能需要做的是爲列表中的每個項目創建一個不同的FileSystemWatcher

相關問題