C# 如何知道该文件是否正在计算机中使用?
如何知道使用C的计算机中是否正在使用C# 如何知道该文件是否正在计算机中使用?,c#,.net,file,stream,C#,.net,File,Stream,如何知道使用C的计算机中是否正在使用C:\FOO\BAA\filename.extension文件 我试过: try { var file = File.OpenRead(fileName); } catch { // .. } 但只有当文件在当前时间被另一个进程访问时,它才会返回异常。 提前谢谢 如果您试图确定最近是否使用了某个特定文件,则可以检查该方法。它将告诉您上次访问该文件的时间(假设没有人弄乱它) 否则,要确定某个文件当前是否正在使用,您发布的代码应该可以工作。“但只
C:\FOO\BAA\filename.extension
文件
我试过:
try {
var file = File.OpenRead(fileName);
} catch {
// ..
}
但只有当文件在当前时间被另一个进程访问时,它才会返回异常。
提前谢谢 如果您试图确定最近是否使用了某个特定文件,则可以检查该方法。它将告诉您上次访问该文件的时间(假设没有人弄乱它)
否则,要确定某个文件当前是否正在使用,您发布的代码应该可以工作。“但只有当该文件在当前时间被另一个进程访问时,它才会返回异常”。。。那么,“被利用”是什么意思?它可以被另一个进程使用,这是您获取exception.Off主题的地方,但与您的代码示例相关:在未指定异常类型的情况下,永远不要执行盲
catch{/*…*/}
。这是一种糟糕的形式,因为存在一些您永远不应该处理的异常(例如OutOfMemoryException
)。相反,只捕获您专门知道如何处理的异常类型,例如,UnauthorizedAccessException
@vucetica:当我说“正在使用”时,我的意思是如果文件当前在windows中打开。@Jack and只能打开,并且只有在其他进程打开它时,因此,如果您的代码在另一个进程打开文件时抛出异常,那么它工作正常。@Steve-有时您不知道这些人在想什么。当我说“正在使用”时,我的意思是如果文件当前在windows中打开。@Jack-那么您发布的代码应该可以工作。有什么问题吗?我需要的是这样的:Process[]processlist=Process.getprocesss();foreach(processlist中的进程进程){if(proc.MainModule.FileName.Equals(path)){return true;}}
它给出了一个异常:win32Exception:access denied
@Jack-这与您的问题有什么关系?您可能没有权限。也许,如果你描述一下(在你的问题中)你正在努力实现的目标,我们可能会更好地帮助你。