2014-02-21 98 views
2

有人可以幫助我瞭解如何構建一個運行24/7的軟件來監聽特定文件夾(例如C:\ Actions),並且每次我將一個新文件放入該文件夾,該軟件需要讀取和處理它。文件夾事件中的新文件

如果文件夾中沒有文件,軟件不應該只做等待下一個文件來。

文件的實施例(action1.txt)含量(1 + 1)

的軟件處理(1 + 1),答案保存(2)至夾花葯和刪除該文件(action1.txt )從「C:\ Actions \」文件夾中。

我知道如何讀文件並進行處理..

我有困難,瞭解如何觸發軟件只有當文件夾中的新文件,以及如何爲24運行軟件/ 7沒有使用太多的內存或導致內存泄漏...

直到現在我已經在循環無盡和每60秒(睡眠)的原始方式使用它,我正在檢查新文件的文件夾。這是如此無用而且不那麼有效。

,我會很高興,如果有人能幫助我瞭解如何使其更加有效..

非常感謝你

+0

請不要在標題中包含languge標籤,除非在沒有標籤的情況下才有意義。標籤用於此目的。 –

回答

1

看一看的FileSystemWatcher類:

偵聽文件系統更改通知,並引發事件時,目錄或文件目錄中,修改。

更改當指定路徑中的文件或目錄發生更改時發生。

創建創建指定路徑中的文件或目錄時發生。

// Create a new FileSystemWatcher and set its properties. 
    FileSystemWatcher watcher = new FileSystemWatcher(); 
    watcher.Path = "C:\\Actions"; 
    /* 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); 

    // Begin watching. 
    watcher.EnableRaisingEvents = true; 

和改變事件:

3

從該頁面使用FileSystemWatcher

一個例子

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

有一些事情你需要使用的時候要注意這個班雖然。它在網絡驅動器/ UNC路徑上效果不佳。同樣,如果您將很多文件粘貼到目錄中,它將溢出buffer,並且您可能無法獲取添加到該文件夾​​中的每個文件的事件。

相關問題