【发布时间】:2011-09-23 09:50:56
【问题描述】:
我知道已经有几十个关于“文件被另一个进程使用”的问题。但是它们都存在尝试读取文件或写入已被另一个进程使用的文件的问题。我只想检查一个文件是否正在被另一个进程使用(之后没有 IO 操作)。 我没有在其他地方找到答案。 那么,如何知道某个文件或文件夹是否被 C# 中的另一个进程使用?
【问题讨论】:
标签: c# .net io filesystems
我知道已经有几十个关于“文件被另一个进程使用”的问题。但是它们都存在尝试读取文件或写入已被另一个进程使用的文件的问题。我只想检查一个文件是否正在被另一个进程使用(之后没有 IO 操作)。 我没有在其他地方找到答案。 那么,如何知道某个文件或文件夹是否被 C# 中的另一个进程使用?
【问题讨论】:
标签: c# .net io filesystems
正如您在问题中所描述的,唯一的方法是首先尝试打开文件以查看它是否被另一个进程使用。
你可以使用我之前实现的这个方法,想法是如果文件存在然后尝试以open write的方式打开文件,如果失败则文件可能被另一个进程使用:
public static bool IsFileInUse(string fileFullPath, bool throwIfNotExists)
{
if (System.IO.File.Exists(fileFullPath))
{
try
{
//if this does not throw exception then the file is not use by another program
using (FileStream fileStream = File.OpenWrite(fileFullPath))
{
if (fileStream == null)
return true;
}
return false;
}
catch
{
return true;
}
}
else if (!throwIfNotExists)
{
return true;
}
else
{
throw new FileNotFoundException("Specified path is not exsists", fileFullPath);
}
}
【讨论】:
这篇文章可能会有所帮助:
【讨论】: