2012-01-08 76 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

相关问题