2010-10-26 34 views
4

我使用FileInfo.LastWriteTime來知道什麼時候確切的最後一次某個文件,比如說「c:\ temp \ test_file.txt」發生了變化。FileInfo.LastWriteTime可能會引起誤解。任何其他方法?

當某人實際打開文件,進行更改並保存時,它工作得很好 - 此文件的FileInfo.LastWriteTime正在更新,文件更改的時間已更新。

但是發生在以下情形:

複製具有相同的名稱,但與其他位置上的光盤不同內容的文件,然後將其粘貼在「C:\ TEMP \」文件夾(覆蓋現有文件) - 文件「c:\ temp \ test_file.txt」實際上已更改(由具有相同名稱但內容不同的文件覆蓋),文件的LastWriteTime「c:\ temp \ test_file.txt 「不是它被覆蓋的時間,但它實際上是我們複製的文件的」LastWriteTime「,並且可能早於它被覆蓋的時間。

在情況下,我需要知道哪些文件被覆蓋的那一刻,有沒有別的辦法,並請像FileChange事件註冊提出解決方案 - 我在尋找一個解決方案,其中我不必像程序一樣隨時運行程序 - 我的應用程序可能不會一直執行,而且即使此時應用程序已關閉,我也需要知道文件何時被覆蓋。

+0

我用.NET標記了這個,但是你可能想爲適當的語言添加一個標記。人們通過標籤搜索和過濾問題,因此您可能會得到更好的答案。我假設C#或VB,但我不確定哪些基於您的問題的當前內容。 – eldarerathis 2010-10-26 21:04:51

+1

你真的想知道文件何時被更改,或者你真的想知道如果文件被更改? – Dialecticus 2010-10-26 21:48:43

+0

嗨Dialecticus,我通常,我想知道如果該文件被更改,但現在我說,你可能會開始給我的解決方案,如:「保存副本的文件在一個側面目錄,只是比較當前文件保存到一邊 - 這不會幫助我,因爲我正在觀看許多文件!!並將它們全部存儲在一邊是耗費時間和空間的任何其他建議? – Liorp 2010-10-27 13:07:00

回答

1

在您描述您的問題的情況下,您可以使用文件創建時間,因爲當您複製文件時它將發生更改。

我建議您需要檢查最後寫入時間和文件創建時間,以確定大部分更改。

否則,您可以查看文件大小,如果這還不夠,那麼您需要生成文件內容的散列。

編輯

如果您使用的是FileInfo對象,你需要調用Refresh方法來更新任何的最後寫入時間,創建時間,文件是否存在等,性能。

+0

嗨Enigmatifity, 它沒有工作。 FileInfo.CreationTime與粘貼(覆蓋)操作的時刻不一致,但早於此時間。 其他建議? 感謝高級! – Liorp 2010-10-27 11:35:57

+0

嗨Enigmatifity,我看了你的'編輯',並試圖在查看最後的寫入,訪問和創建時間之前調用FileInfo.Refresh()方法,但它沒有幫助。 – Liorp 2010-10-27 13:20:25

+0

還有其他建議嗎? – Liorp 2010-10-27 13:20:55

0

爲此,您需要使用的FileInfo .CreationTime() &以及的FileInfo .LastWriteTime()進行檢查方法的組合。

相關問題