如何知道C:\FOO\BAA\filename.extension
文件是否在使用C#的計算機中使用?如何知道文件是否在計算機中使用?
我試了一下:
try {
var file = File.OpenRead(fileName);
} catch {
// ..
}
但它返回一個例外,只有當文件被在當前時間的另一個過程之中。 在此先感謝!
如何知道C:\FOO\BAA\filename.extension
文件是否在使用C#的計算機中使用?如何知道文件是否在計算機中使用?
我試了一下:
try {
var file = File.OpenRead(fileName);
} catch {
// ..
}
但它返回一個例外,只有當文件被在當前時間的另一個過程之中。 在此先感謝!
如果您試圖確定是否最近使用了特定文件那麼您可以查看檢查File.GetLastAccessTime
方法。它會告訴你文件上次訪問的時間(假設沒有人干擾它)。
否則,要確定文件是否爲目前正在使用,您發佈的代碼應該可以正常工作。
「但只有當文件正在被另一個進程在當前時間內時纔會返回異常」......那麼您通過「正在使用」是什麼意思?它可以被另一個進程使用,並且這是你得到異常的地方。 – 2012-01-08 23:48:04
脫離主題,但與您的代碼示例相關:不要指定異常類型,不要盲目執行'catch {/ * ... * /}'。這是一種糟糕的形式,因爲有些例外你不應該處理(比如'OutOfMemoryException')。您只需要捕獲您特別知道如何處理的異常類型,例如'UnauthorizedAccessException'。 – 2012-01-09 00:19:54
@vucetica:當我說「正在使用」時,我的意思是如果文件在當前窗口中打開。 – Jack 2012-01-09 00:21:06