vb.net中如何检测一个已知的
文件是否已经被打开或者被其他应用程序
调用 vb.net中如何检测一个已知的
文件是否已经被打开或者被其他应用程序
调用,急。。。 __________________________________________________________________________ 试试看下面
代码 Dim fileName As String Try Dim aa As New System.IO.FileStream(fileName,IO.FileMode.OpenOrCreate,IO.FileAccess.ReadWrite,IO.FileShare.None) If aa.CanWrite = False Then Msg
Box(fileName + " is opened") Else Msg
Box("ok") End If Catch ex As Exception Msg
Box(ex.Message.ToString) End Try __________________________________________________________________________ LS的我觉得不妥,如果
文件是只读
文件的话,CanWrite应该都返回false,也就是说无法判断是不是有其他人打开了此
文件 __________________________________________________________________________ 我差了下资料,LZ可以试试看 用FileCopy复制你要打开的
文件,捕捉它的异常,如果它的异常
错误号是55的话,说明
文件已打开,所以不能赋值,通过这个,可以判断这个
文件是不是已经打开了,具体
代码我等下写一个,再贴上来 __________________________________________________________________________ lZ,我测试了一下,貌似用其他工具先打开
文件的话好像本程序无法判断 不过我想
方法是有的,我也等着学习先^_^ __________________________________________________________________________ 我用file.delete(path)
方法去
删除一个已经打开的
文件,
文件表面上是被
删除了,但是在电脑还是打开的,(我的电脑上
删除文件不会弹出“确认
文件删除”对话框,不知道是不是跟这个有关系?)VS也没有报告有什么异常,有异常就好了,可以捕捉这个异常。 __________________________________________________________________________ 县判断有没有
文件,若有则进行剪切操作,能剪切,说明没有被打开。 VB.NET code If FileIO.FileSystem.FileExists(filename) Then Else Msg
Box("
文件不存在") Exit Sub End If dim path as string path="c:/temp" On Error GoTo opend FileIO.FileSystem.MoveFile(filename,path) FileIO.FileSystem.MoveFile(path,filename) Msg
Box("
文件未打开") Exit Sub opend: Msg
Box("
文件打开") __________________________________________________________________________ 有点乱,你凑合看~ __________________________________________________________________________ 基本上被其他进程
调用的话,也是不能剪切的吧。。。。(个人猜测,搂主自己试试吧。。。^.^) __________________________________________________________________________ 这要看怎么理解这个“打开”。 可以象一楼的办法那样,尝试独占打开一个
文件,如果不行,可以推测该
文件正在使用中 VB.NET code Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click Using d As New OpenFileDialog If d.ShowDialog = Windows.Forms.DialogResult.OK Then Console.WriteLine(IsOpened(d.FileName)) End If End Using End Sub Public Shared Function IsOpened(ByVal filename As String) As Boolean Try Dim aa As New System.IO.FileStream(filename,IO.FileMode.Open,IO.FileAccess.Read,IO.FileShare.None) aa.Dispose() Return True Catch ex As Exception Return False End Try End Function 但有一些,是貌似“打开”的情形,如用记事本打开一个文本
文件,你是无法判断的。 __________________________________________________________________________ 学习了 __________________________________________________________________________ Dim file As String file = "c:/1.doc" If FileIO.FileSystem.FileExists(file) Then Else Msg
Box("
文件不存在",Msg
BoxStyle.OkCancel,"Error") Exit Sub End If Try FileIO.FileSystem.DeleteFile(file)''试着去去
删除此
文件 Catch ex As Exception''捕捉
删除时的异常 Msg
Box("
文件已经打开或正在被使用","Error") End Try 但是如果你
删除的是txt文本
文件的话,好像不会出现异常,刚开始我是用txt试验的,可以
删除一个正在被使用的txt文档而不报告异常。 __________________________________________________________________________ txt
文件。。。。。。可以打开n多,随便
删除。。。。。你要是针对txt的话,最好是研究下txt
文件的原理,针对原理进行下判断。。。。不能简单的使用
文件系统 __________________________________________________________________________ 用这个吧,判断系统进程中是否含有这个
文件的进程。这样应该完全可以判断
文件是否被打开了 VB.NET code Dim filename As String = "02.xls" Dim ps() As Process = Process.GetProcesses Dim p As Process For i = 0 To ps.Length - 1 p = ps(i) If p.MainWindowTitle.Contains(filename) Then Msg
Box("
文件打开") End If Next __________________________________________________________________________
原文链接:/vb/264117.html