我们在项目中经常会对文件进行增删改的操作。如果文件被占用,进行删除移动等操作时,会抛出异常,我们可以对其进行检测,对用户进行提醒。

在http://blog.csdn.net/snakorse/article/details/19581329看到了如下的用法:

添加命名空间:
using System.Runtime.InteropServices;

在类里面添加:
//2018-1-19 文件操作 判断文件是否被占用[DllImport("kernel32.dll")]public static extern IntPtr _lopen(string lpPathName, int iReadWrite);[DllImport("kernel32.dll")]public static extern bool CloseHandle(IntPtr hObject);public const int OF_READWRITE = 2;public const int OF_SHARE_DENY_NONE = 0x40;public readonly IntPtr HFILE_ERROR = new IntPtr(-1);

private void btnDelete_Click(object sender, RoutedEventArgs e){int[] _intRow = this.tableView1.GetSelectedRowHandles();if (_intRow == null || _intRow.Length <= 0 || _intRow[0] < 0){MessageBox.Show("请选择你需要删除的数据!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);}else{if (MessageBox.Show(this, "是否删除所选的图片?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question) == System.Windows.MessageBoxResult.Yes){for (int i = 0; i < _intRow.Length; i++){object str = gridImgData.GetCellValue(_intRow[i], "VarPath");                        //判断文件是否占用IntPtr vHandle = _lopen(str.ToString(), OF_READWRITE | OF_SHARE_DENY_NONE);if (vHandle == HFILE_ERROR)//被占用{if (MessageBox.Show("该图片在工程中已使用,是否确定移动或删除的操作?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question) == System.Windows.MessageBoxResult.Yes){try{if (File.Exists(str.ToString()))//如果存在文件
                                    {File.Delete(str.ToString());}tableView1.DeleteRow(_intRow[i]);//删除列表上的记录
                                }catch (Exception ex){string strmsg = string.Format("图片删除失败,原因:{0}", ex.Message);MessageBox.Show(strmsg, "提示", MessageBoxButton.OK, MessageBoxImage.Information);}}else//未被占用{return;}}else{try{if (File.Exists(str.ToString()))//如果存在文件
                                {File.Delete(str.ToString());}tableView1.DeleteRow(_intRow[i]);//删除列表上的记录
                            }catch (Exception ex){string strmsg = string.Format("图片删除失败,原因:{0}", ex.Message);MessageBox.Show(strmsg, "提示", MessageBoxButton.OK, MessageBoxImage.Information);}}}}}}

转载于:https://www.cnblogs.com/hllxy/p/8317637.html

C# 检测文件是否被其他进程占用相关推荐

  1. 易语言取c盘文件夹中的文件被占用,易语言检测文件被哪个进程占用的代码

    易语言检测文件被哪个进程占用的代码 检测文件占用的代码 此功能需要加载贝贝吧模块6.6 .版本 2 .支持库 eAPI .程序集 窗口程序集_启动窗口 .子程序 _查询按钮_被单击 .局部变量 进程名 ...

  2. linux fuser 命令 查看文件/网络端口 被什么进程占用

    linux环境下,当使用umount命令卸载挂载点时,会遇到"device is busy"提示,这时fuser就能查出谁在使用这个资源;当然umount –lf  [挂载点] 也 ...

  3. windows 技巧篇-查看文件夹被那个进程占用,文件夹占用解除方法

    有时候我们关闭程序后,发现之前被程序占用的文件夹还是被占用状态. 因为一些程序逻辑不完善的原因,常规的关闭并没有彻底的杀死进程. 下面给大家介绍下查看占用文件夹进程的方法. 第一步: 在任务管理器性能 ...

  4. java 删除文件失败_java 文件删除失败(被进程占用)

    解决方案:系统进行资源强制回收//System.gc();{不建议使用} 关闭流(未及时关闭会内存溢出) 问题--- 文件删除失败 (后来发现是被进程占用) 发现问题--第一次测试10个文件上传成功8 ...

  5. lsof查看进程占用文件_Linux 利用lsof命令查找已经删除的文件来释放磁盘空间

    测试环境一台服务器/ 根目录空间使用率达到94%,但是通过du -sh * 发现实际空间没没用用到那么多,初步怀疑,之前删除的文件,有运行中的进程一直占用,导致空间没有释放,如图通过du -sh * ...

  6. 易语言取c盘文件夹中的文件被占用,win7系统怎么快速找出文件被什么进程占用|win7解除文件占用的方法...

    ‍‍ 很多时候我们想删除文件或文件夹的时候,会出现文件正在使用的提示导致文件无法删除,如果知道是什么程序在使用这个文件好,但多数时候我们并不知道是被什么程序占用,那么在win7系统怎么快速找出文件被什 ...

  7. 任务管理器中查看文件被哪个进程占用

    我们应该会经常遇到这样的情况,当删除一个文件或者文件夹时,提示无法删除,文件被占用:但是提示信息中有时并未给出是被哪个进程所占用,如果能找出文件被哪个进程占用,然后杀死相应的进程,文件就能被删除. 写 ...

  8. 解决Linux删除用户时进程占用,及新建账户提示主目录已存在、信箱文件已存在的问题

    解决Linux删除用户时提示进程占用(currently used by process) 文章目录 解决Linux删除用户时提示进程占用(currently used by process) 运行环 ...

  9. Python读取大文件的坑与内存占用检测

    Python读取大文件的"坑"与内存占用检测 1.read()与readlines() with open(file_path, 'rb') as f:sha1Obj.update ...

最新文章

  1. ffmpeg为AVPacket添加解码头信息
  2. html5爆款游戏,精华盘点:2018年的十款“爆款”独立游戏,你都玩过吗?
  3. Springboot里输出的html里包含script标签页会怎样
  4. 2 JVM 运行机制
  5. mysql集群之keepalived简单搭建
  6. LeetCode 557. Reverse Words in a String III
  7. python异常处理与上下文管理器
  8. git remote: Permission to denied
  9. 解决QSqlTableModel::setData()崩溃的问题
  10. Java使用OpenOffice实现Office系列文件转Pdf
  11. J2EE框架技术(SpringMVC) 知识点笔记(1)
  12. 破解网址_中国目前的破解组织大全
  13. sharepoint对nodejs的要求
  14. 计算机丢失mscvr,教大家计算机丢失Msvcr100.dll的解决方法
  15. 旧时王谢堂前燕,飞入寻常百姓家
  16. 7z001怎么解压在安卓手机上面_安卓手机时间怎么显示在中间 时间居中设置教程...
  17. 2010年一句话破解QQ密码!
  18. (轉貼) LCD入門常識
  19. MybatisPlus多表联查分页多条件查
  20. JavaScript通过下标获取对象(字典)指定键和值

热门文章

  1. 什么才是真正赚钱?| 每日趣闻
  2. Exchange 2010 共享邮箱
  3. es6的Promise(承诺)
  4. 加速 cinder 删除volume速度
  5. 爆气球这道题目,展开了新的思路
  6. android笔试题整理
  7. 【Ubuntu】ubuntu webqq桌面版pywebqq
  8. Win 7 隐藏小功能——屏幕录制
  9. T4 (Text Template Transformation Toolkit)实现简单实体代码生成
  10. 聊聊flink的StateTtlConfig