咨询区

  • Dawsy

我的项目中有一个需求,它需要不断的访问一个文件,很多时候这个访问逻辑都是正常的,但有时候访问太快,会抛出如下异常:

"File in use by another process"

为了能找到其解决方案,我翻遍了google,我发现几乎所有的方式都是用 try,catch 来判断,我是一个有代码洁癖的人,我希望寻找一种更高效的方式。

回答区

  • Community

如果不想用 try catch 判断异常类型的话,可以在 Open 文件的时候使用 FileModel.OpenOrCreate 枚举,希望对你有帮助。参考如下代码:

static void Main(string[] args){string filePath = "C:\\Documents And Settings\\yourfilename";bool isFileInUse;isFileInUse = FileInUse(filePath);// Then you can do some checkingif (isFileInUse)Console.WriteLine("File is in use");elseConsole.WriteLine("File is not in use");}static bool FileInUse(string path){try{using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate)){return fs.CanWrite;}}catch (IOException ex){return true;}}
  • Karl Johan

你可以使用 FileSystemWatcher 的 Change 事件去监控文件的更变,我虽然没用过这个类,但我觉得在非 try catch 情况下可以值得一试,如果频繁的写入对 FileSystemWatcher 有过大负载的话,建议还是切回到 try catch 上。

点评区

其实常规做法就是将业务代码通过 try catch 包裹起来,然后在 catch 中判断是否存在文件被使用,简单粗暴,比如下面这段代码:

protected virtual bool IsFileLocked(FileInfo file)
{try{using(FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None)){stream.Close();}}catch (IOException){return true;}return false;
}

很显然这种用异常来分流业务逻辑,这是一种不推荐的做法,性能也是非常低,上面两位大佬也给了自己的意见,大家可以根据具体场景使用。

如何正确处理 .NET 文件的 `File in use by another process` 异常 ?相关推荐

  1. 正确的WordPress文件权限[关闭]

    本文翻译自:Correct file permissions for WordPress [closed] I've had a look over here but didn't find any ...

  2. JAVA SE学习day_03:包装类、文件操作——file

    一.包装类 包装类是为了解决基本类型不能直接参与面向对象开发的问题,实际就是将基本类型以"对象"的形式表示 Integer 1.1基本类型转换为对应的包装类(引用类型) int i ...

  3. 【转】Android必备知识点- Android文件(File)操作

    Android 使用与其他平台上基于磁盘的文件系统类似的文件系统. 本文讲述如何使用 Android 文件系统通过 File API 读取和写入文件. File 对象适合按照从开始到结束的顺序不跳过地 ...

  4. android读写删file,Android文件(File)操作

    Android 使用与其他平台上基于磁盘的文件系统类似的文件系统. 本文讲述如何使用 Android 文件系统通过 File API 读取和写入文件. File 对象适合按照从开始到结束的顺序不跳过地 ...

  5. C#文件操作 File(静态类)

    操作某一个文件/文件夹,需要一个文件的完整路径 一.使用File的静态方法进行文件操作 1 2 3 4 5 6 7 8 9 //使用file的静态方法进行复制             File.Cop ...

  6. python计算文件md5值_用python 正确计算大文件md5 值

    python 计算文件的md5值很方便,但如果只是简单的把文件都入到内存中,大文件会导致问题,一般采用切片的方式分段计算,下面的几个函数可以很好的解决这个问题. 使用 hashlib import h ...

  7. python写文件读文件-Python 读写文件和file对象的方法(推荐)

    1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.tx ...

  8. Python编程基础:第三十节 文件检测File Detection

    第三十节 文件检测File Detection 前言 实践 前言 我们通常会涉及到文件相关的操作,例如检测.读写.复制.删除等等.本节我们一起来学习文件检测相关知识,即检测指定路径下是否存在该文件. ...

  9. 路径问题(如何正确写出文件路径)

    package star.july;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.Servle ...

最新文章

  1. js事件(Event)知识整理
  2. 499php,一笔画仙路 [499]第499章 神器的威力 最新章节无弹窗全文免费阅读 乐文阅读官网...
  3. 华为oj平台的新网址
  4. Python词云 wordcloud 十五分钟入门与进阶
  5. boost::spirit模块实现错误处理的测试程序
  6. 在diy的文件系统上创建文件的流程
  7. xp系统debugger用户_xp系统BIOS恢复出厂设置开机需按F1的具体步骤--win10专业版
  8. Java可变引用,Java – 对可变对象的易失性引用 – 对对象的字段的更新对所有线程都是可见的...
  9. 教你动手做一个 iOS 越狱 app
  10. 矩阵横向输出_Python3算法之八:矩阵螺旋遍历
  11. 使用CXF 来发布一个 service
  12. diff与patch操作
  13. linux扫描仪如何使用方法,怎样在linux下设置和使用扫描仪.doc
  14. 练习京东顶部导航条、背景、渐变、按钮练习(雪碧图)、渐变
  15. ASP程序性能测试报告
  16. python所有字母大写_在python中将所有字母改为大写
  17. 【css】svg修改图标颜色
  18. 正在工作的程序员,生活状态都很苦逼?
  19. 全国青少年编程等级考试python一级真题2020年6月(含题库答题软件账号)
  20. 2022年中国互联网数据中心(IDC)行业产业链及市场现状分析(附国家绿色数据中心公示名单)[图]

热门文章

  1. 搞IT的技术人员为什么会如此苦逼
  2. 制作Geek风格的投影片
  3. 鄙人之斗,读IT之洋(1)
  4. Linux Command Line 解析
  5. rfc mail content-type
  6. mui aniShow 动画属性
  7. sublime text3搭建react native
  8. PHP | Uploading and reading of files and database 【PHP | 文件的上传和读取与数据库】
  9. 【APP接口开发】常用HTTP响应头状态码详解
  10. 51 Nod 1670 打怪兽