2012-01-08 32 views
0

如何知道C:\FOO\BAA\filename.extension文件是否在使用C#的計算機中使用?如何知道文件是否在計算機中使用?

我試了一下:

try { 
var file = File.OpenRead(fileName); 
} catch { 
    // .. 
} 

但它返回一個例外,只有當文件被在當前時間的另一個過程之中。 在此先感謝!

+4

「但只有當文件正在被另一個進程在當前時間內時纔會返回異常」......那麼您通過「正在使用」是什麼意思?它可以被另一個進程使用,並且這是你得到異常的地方。 – 2012-01-08 23:48:04

+4

脫離主題,但與您的代碼示例相關:不要指定異常類型,不要盲目執行'catch {/ * ... * /}'。這是一種糟糕的形式,因爲有些例外你不應該處理(比如'OutOfMemoryException')。您只需要捕獲您特別知道如何處理的異常類型,例如'UnauthorizedAccessException'。 – 2012-01-09 00:19:54

+0

@vucetica:當我說「正在使用」時,我的意思是如果文件在當前窗口中打開。 – Jack 2012-01-09 00:21:06

回答

2

如果您試圖確定是否最近使用了特定文件那麼您可以查看檢查File.GetLastAccessTime方法。它會告訴你文件上次訪問的時間(假設沒有人干擾它)。

否則,要確定文件是否爲目前正在使用,您發佈的代碼應該可以正常工作。

+0

+1對模糊問題的創意建議。 – Steve 2012-01-09 00:04:28

+0

@Steve - 有時你只是不知道這些人在想什麼。 – 2012-01-09 00:05:20

+0

當我說「正在使用」時,我的意思是如果該文件在當前窗口中打開。 – Jack 2012-01-09 00:21:27

相關問題