判断文件是否被占用的两种方法

网友投稿 383 2022-11-21

判断文件是否被占用的两种方法

第一种方法:采用文件流方式;打开进行读取操作,看看是否可以;(亲自尝试,完全正确)   public static bool IsFileInUse(string fileName) { bool inUse = true; FileStream fs = null; try { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None); inUse = false; } catch { } finally { if (fs != null) fs.Close(); } return inUse;//true表示正在使用,false没有使用 } 第二种:   添加引用:kernel32.dll;32位动态链接库文件   using System.IO; using System.Runtime.InteropServices; [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 button1_Click(object sender, EventArgs e) { string vFileName = @"d:\temp.bmp"; if (!File.Exists(vFileName)) { MessageBox.Show("文件都不存在!"); return; } IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE); if (vHandle == HFILE_ERROR) { MessageBox.Show("文件被占用!"); return; } CloseHandle(vHandle); MessageBox.Show("没有被占用!"); } 个人更加倾向于第一种,少用引用,在部署的时候,就会少很多问题~~,上线时才能少些bug、小编比较粗心,由于项目中用的引用较多,所以部署的时候,总可能会丢引用,在生产环境下,就没有达到预想的效果,不过也养成一个习惯,所有添加的引用都放到一个固定的文件夹中,每次部署前,先把这些dll复制到打包文件夹,就会方便许多、尽可能的少依赖于固定的软件或者操作系统。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:理解Mysql_fetch_row()返回查询结果
下一篇:Java和C语言分别实现水仙花数及拓展代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~