gpt4 book ai didi

c# - 在没有 Try Catch 的情况下检查文件锁定

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:32 25 4
gpt4 key购买 nike

有没有更好的方法来检查文件是否未锁定然后打开文件以捕获异常。我有一个在目录上运行的 filewatcher,我需要在文件在该位置完全移动/创建后对文件执行某些操作。抛出异常不会影响性能吗?有没有更好的办法?

Private Function FileAvailable(ByVal fileName As String) As Boolean
Try
Using inputStream As FileStream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
Return True
End Using
Catch ex As IOException
Return False
End Try
End Function

private bool FileAvailable(string fileName) { 
try {
using (FileStream inputStream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None)) {
return true;
}
}
catch (IOException ex) {
return false;
}

}

请教小专家最好的方法。谢谢

正在将文件复制到 watch 目录中。没有其他用户可以访问该目录。在我自己处理和移动文件之前,我只需要验证文件是否已完全复制到目录中。我需要独家访问它。

最佳答案

您打算多久做一次?结合上下文,假设您每 50 毫秒检查一次 - 这非常频繁。我的笔记本电脑(我上次检查时)能够每毫秒抛出 100 多个异常...因此抛出异常的成本将低于总时间的 0.02% - 并且假设它总是忙!

现在,如果有一个 API 来避免这种情况当然会很好 - 一种 TryOpenFile - 但在没有它的情况下,我只是把它藏在另一个函数中而不用担心。

但是请记住,如果您只是返回一个 bool 值,那么您的数据一返回就过时了——另一个进程可能会在您返回“没关系”后立即获取独占锁。为避免这种情况,您应该考虑返回打开的流。

关于c# - 在没有 Try Catch 的情况下检查文件锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/547946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com