FileStream: how to check file is ready, not used?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Is there a way to check if a file is in use?
我看到有一种非常简单的方法可以检查文件是否已解锁,而不是由其他进程使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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; } |
很好,但是如何检查该方法是否将使用filestream作为参数呢?
1 2 3 | public static bool Check(FileStream f) { //... |
有什么建议吗?谢谢你
我想这取决于您的目标,但是对于我能想象的大多数应用程序来说,检查这条路径可能不是正确的。
我猜你想检查这个,这样你就可以检查,如果不使用的话,去做一些事情(比如检查,然后写一行代码)。这里的挑战是,在中间可能会有其他人来拿文件,导致您尝试的操作失败。
一般来说,我会说,只要你想做什么就做什么,然后在那里抓住失败。你需要防御性地编码,并且无论如何都要假设这一点。额外的检查很少取得多大效果。