检测文件是否已经打开或被其他进程占用
在VB.NET保存文件时,不禁产生这样一个疑问,如果想保存的这个文件覆盖先前已经存在的文件,但这个文件已经被打开,程序运行会出错,如何检测保存的这个文件已经已经打开或者被其他进程占用并且提示这个错误?
一、本文主要解决问题
1、检测当前路径下保存的文件是否已经打开或被占用
2、不同文件下,文件名相同的两个文件出现误判的情况
二、解决方法
经过初步的学习,目前两个可以探索或者可以实现的方法
1、检测计算机进程中是否存在这个事件
2、以独占的方法打开文件
方法一
既然要检测已知文件是否已经打开,可以直接利用计算机进程来解答,检测当前任务管理器中是否存在该事件,如果存在,可以判定文件已经打开或者被占用。
部分代码:
SaveFileDialog1.Filter = "所有文件|*.text"
SaveFileDialog1.FilterIndex = 1
SaveFileDialog1.ShowDialog()
TextBox2.Text = SaveFileDialog1.FileName
Dim filename As String = TextBox3.Text
Dim pp() As Process = Process.GetProcesses '获取进程
Dim p As Process
For i = 0 To pp.Length - 1
p = pp(i)
If p.MainWindowTitle.Contains(filename) Then
MsgBox("文件打开或被