我看到有一种非常简单的方法可以检查文件是否已解锁,不会被其他进程使用:
public static bool Check(string filepath)
{
try
{
using (File.Open(filepath, FileMode.Open, FileAccess.Read, FileShare.None)) {}
}
catch (Exception e)
{
log("file not ready" + e);
return false;
}
return true;
}
那太棒了,但是如何检查Method是否会使用FileStream作为参数?
public static bool Check(FileStream f)
{
//...
有什么建议吗?谢谢
答案 0 :(得分:2)
我想这取决于你的目标,但对于我能想象的大多数应用来说,检查这可能不是正确的道路。
我猜你要检查这个,以便你可以检查,如果没有使用,去做一些事情(即检查然后写一行代码)。这里的挑战是,在中间,其他人可能会出现并拿走文件,导致您在尝试的操作中失败。
一般来说,我只是试着做任何你想做的事情并抓住那里的失败。无论如何,你需要进行防御性编码并假设这一点。额外的检查很少能实现。