如何知道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