2014-07-21 43 views
1

我掙扎成一個問題。我有一個同步程序,我需要知道一個觀看項目是一個文件還是文件夾。問題是,當我檢查的文件或文件夾是否存在 - 無論怎樣,如果我檢查文件,File.Exists總是返回false:File.Exists()在FileSystemWatcher的Deleted事件中返回false

private void onDelete(object o, FileSystemEventArgs e) 
{ 
    if (Directory.Exists(e.FullPath)) 
     Directory.Delete(watched + e.Name, true); 

    if (File.Exists(e.FullPath)) 
     File.Delete(e.FullPath); 
} 

任何人看到這個問題可能是什麼?

+0

刪除文件時,「e.FullPath」是什麼? –

+0

你在'e.FullPath'中得到了什麼?並檢查文件是否存在或不存在? – SpiderCode

+0

嘗試輸出'e.FullPath'使用Console.WriteLine或MessageBox來查看你是否在操縱一個真實的路徑 – bumbumpaw

回答

5

您正在嘗試查找onDelete上的文件/文件夾,此方法將在文件/文件夾已被刪除時觸發。所以你不能在文件夾中獲取該文件,因爲它被刪除並且不存在。

+0

哦......好的,謝謝。那並沒有超出我的想法。我會嘗試修復它,如果我找出如何 –

+0

不客氣。 – Adil

0

FileSystemWatcher是一個通知系統,而不是掛鉤。

你並不會因爲它觸發的事件進行干預,這樣你就不必自己刪除文件時,被刪除的事件被提出:你收到這樣的事件後刪除已經發生。

0

正如Adil在他的回答中所說的,你已經太遲了。但是,也許你可以通過文件名本身區分這些項目?如果你是唯一創建文件和文件夾的人,你可以建立一個約定。例如,您可以使用文件擴展名,然後您可以從文件名(Path.GetExtension)中輕鬆獲取文件擴展名。

除此之外,您可能會被困於不得不記錄目錄中的所有文件和文件夾,以確保它們是您想要的類型。

相關問題