第一种方法:API

 1 using System.IO;  2 using System.Runtime.InteropServices;  3  4 [DllImport("kernel32.dll")]  5 public static extern IntPtr _lopen(string lpPathName, int iReadWrite);  6 7 [DllImport("kernel32.dll")]  8 public static extern bool CloseHandle(IntPtr hObject);  9
10 public const int OF_READWRITE = 2;
11 public const int OF_SHARE_DENY_NONE = 0x40;
12 public readonly IntPtr HFILE_ERROR = new IntPtr(-1);
13 private void button1_Click(object sender, EventArgs e)
14 {
15     string vFileName = @"c:\temp\temp.bmp";
16     if (!File.Exists(vFileName))
17     {
18         MessageBox.Show("文件都不存在!");
19         return;
20     }
21     IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);
22     if (vHandle == HFILE_ERROR)
23     {
24         MessageBox.Show("文件被占用!");
25         return;
26     }
27     CloseHandle(vHandle);
28     MessageBox.Show("没有被占用!");
29 }  

第二种方法:FileStream

 1 public static bool IsFileInUse(string fileName)  2  {  3         bool inUse = true;  4   5         FileStream fs = null;  6         try  7         {  8   9             fs = new FileStream(fileName, FileMode.Open, FileAccess.Read,
10
11             FileShare.None);
12
13             inUse = false;
14         }
15         catch
16         {
17         }
18         finally
19         {
20             if (fs != null)
21
22                 fs.Close();
23         }
24         return inUse;//true表示正在使用,false没有使用
25 }  

VB.Net

 1  Sub Prepare()2         If File.Exists(logRW) Then File.Delete(logRW)3         Dim bflag As Boolean = False4         Try5             Do6                 Shell("CMD.exe /C RW.exe /Command=LimitA.rw /LogFile=LimitA.log", AppWinStyle.Hide, True, 5000)7                 Threading.Thread.Sleep(1000)8                 While (IsFileInUse("LimitA.log"))9                     Threading.Thread.Sleep(2000)
10                 End While
11
12                 If File.Exists(logRW) Then
13                     Dim All As String = My.Computer.FileSystem.ReadAllText(logRW)
14                     '检查LogRW的0x01的位置的值是否为0x08
15                     If All.Contains("Read EC Byte 0x01 = 0x80") Then
16                         bflag = True
17                     End If
18                 End If
19             Loop Until bflag
20
21             Using sr As New StreamReader(logRW)
22                 Do Until sr.EndOfStream
23                     Dim s As String = sr.ReadLine
24                     If s.Contains("Set Environment RwLOCAL3") Then
25                         'Set Environment RwLOCAL3 = 4608 (DEC)
26                         LimitA = CDbl(s.Split(New String() {"=", "("}, StringSplitOptions.RemoveEmptyEntries)(1))
27                         Console.WriteLine("Limit Current: " & LimitA)
28                         LogStr = LogStr & vbCrLf & "Limit Current: " & LimitA
29                         Exit Do
30                     End If
31                 Loop
32             End Using
33
34         Catch ex As Exception
35             Console.WriteLine(ex.Message & Err.Description)
36             Environment.Exit(1)
37         End Try
38     End Sub
39
40     Function IsFileInUse(ByVal fileName As String)
41         Dim inUse As Boolean = True
42         Dim fs As FileStream = Nothing
43         Try
44             fs = New FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None)
45             inUse = False
46         Catch ex As Exception
47
48         Finally
49             If (fs IsNot Nothing) Then
50                 fs.Close()
51             End If
52         End Try
53         Return inUse
54     End Function

转载于:https://www.cnblogs.com/yanglang/p/6867601.html

[C#.Net]判断文件是否被占用的两种方法相关推荐

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

    今天开发产线测试Tool时发现日志文件会几率性的被占用,上网浏览找到最简单的代码(API或者FileStream),在这里抛砖引玉下. 第一种方法:API 1 using System.IO; 2 u ...

  2. python获取绝对路径_python3中获取文件当前绝对路径的两种方法

    方法1: import sys print(sys.argv) 得到文件当前绝对路径字符串的一个列表 ['D:/pycharm/PracticeProject/ClientServerNetworki ...

  3. 让Mac复制文件到U盘的两种方法

    2019独角兽企业重金招聘Python工程师标准>>> 让Mac复制文件到U盘的两种方法 一.让Mac支持ntfs格式磁盘 下载安装tuxera ntfs这款Mac读写软件,然后在系 ...

  4. oracle 判断是否位汉字,js判断字符是否是汉字的两种方法小结

    有时需要判断一个字符是不是汉字,比如在用户输入含有中英文的内容时,需要判断是否超过规定长度就要用到.用 Javascript 判断通常有两种方法. 1.用正则表达式判断 js判断字符是否是汉字 .co ...

  5. android判断应用是否回到桌面的两种方法

    有时候需要判断APP是否被切换到后台,然后做相应处理,如显示悬浮窗等.怎么判断呢,有两种方法: 第一种: /*** 判断当前界面是否是桌面*/private boolean isHome() {Str ...

  6. PPT文件设置打开密码的两种方法

    PPT文件设置了打开密码加密,可以保护重要文件内容,今天介绍两种加密PPT文件的方法: 第一种: 点击工具栏中的[文件] 然后点击[信息]-[保护演示文稿]-[用密码进行加密] 然后输入密码,就完成了 ...

  7. 判断是否是回文字符串两种方法

    判断回文字符串的两种方法 public class JudgingPalindrome {public static void main(String[] args) {solution01();Sy ...

  8. 去除idea中mapper文件中的黄色背景两种方法

    一共提供两种方法: 第一种是直接取消验证颜色 第二种是连接数据库设置方言 原效果图: 第一种 步骤:settings->Editor->Inspection,然后取消以下两个勾选 下一步: ...

  9. 将word文件转换成PDF的两种方法

    由于工作需要,使用了两种方式实现了word文件转PDF的功能.以下的程序是我使用VB6编写,供大家参考. 第一种方法,使用PDFMAKERAPILib,使用这种方法,可以设置文件的安全性.这种方式是A ...

最新文章

  1. MS sql server和mysql中update多条数据的例子
  2. hibernate逆向工程生成的实体映射需要修改
  3. python字典items返回什么_Python 字典items返回列表,iteritems返回迭代器
  4. mysql时间戳计算_mysql根据时间戳计算
  5. wordpress增删改查
  6. python beautifulreport_Python unittest 之 BeautifulReport可视化报告
  7. Chrome保存mht网页文件的方法 – 无需任何插件,完美!
  8. 前端rem单位的使用研究
  9. HALCON 21.11:学习笔记---OPC_UA(I/O)
  10. CCF NOI1064 计算斐波那契第n项
  11. vue中实现分片大文件上传
  12. html5视频自动轮播,HTML5教程 可自动轮播的旋转木马插件
  13. 【Excel VBA】自动调整列宽和行高
  14. 如何利用路由器连接wifi并将wifi网络分发出去
  15. 春晚小宫女唐奕霖 网友封为最美的年轻董事长
  16. 阿龙的学习笔记---转载及精炼总结github仓库:cpp-backend-reference
  17. 起诉传音,华为为何会对一张壁纸要价2000万?
  18. DAX中的ALL函数
  19. Windows10连不上网报错代码
  20. 数字化转型的幕后英雄,希捷存储 40 年

热门文章

  1. 中科院自动化所研究员课题组PPT《如何撰写毕业论文?》
  2. TensorFlow入门:TensorFlow工作原理
  3. Tracking 的SimTrack 以及 4D seg
  4. 接收率高达29%的ICLR 2021有哪些论文入榜呢?
  5. (转)20个令人惊叹的深度学习应用
  6. Android把数组从大到小排列,Android SparseArray 排序
  7. mysql8.0导入备份_mysql8.0.20配合binlog2sql的配置和简单备份恢复的步骤详解
  8. php获取继承类方法吗,php如何获取当前类名,继承中的问题?
  9. mysql en dump_mysqldump 命令总结
  10. jQuery中each的用法之退出循环和结束本次循环