以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  利用FileSys.DeleteFile删除文件时,怎么提前判断文件是否处于打开状态?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=3838)

--  作者:cpayinyuan
--  发布时间:2009/8/8 10:34:00
--  利用FileSys.DeleteFile删除文件时,怎么提前判断文件是否处于打开状态?
    如题.用FileSys.DeleteFile删除文件时,如果文件处于打开状态,代码执行会出错,删除失败,并连续出现两个FoxTable的错误提示,这样很不好!
    我想请教一下,怎么在删除文件前先判断文件是否处于打开状态,然后根据打开状态决定是否删除.例如:如果文件处于关闭状态,则删除文件,如果处于打开状态,则不删除文件,弹出对话框"请先把XX文件关闭后才能删除!"

   或者简单一点,用用FileSys.DeleteFile删除文件时,当发现文件处于打开状态时,自动忽略(即不删除),别让系统出错,也不出现错误提示.这样也能基本解决问题.
[此贴子已经被作者于2009-8-8 12:39:39编辑过]

--  作者:cpayinyuan
--  发布时间:2009/8/8 14:16:00
--  
以下是引用hnaysx在2009-8-8 13:26:00的发言:
        Try
            FileSys.DeleteFile("c:\\data\\fox2.jpg", 3, 3)
        Catch ex As System.IO.IOException
            MsgBox("删除失败,请先解锁!")
        End Try

   谢谢!

   但即使这样,在删除处于打开状态下的文件时,仍然会弹出一个Foxtable的对话框,名字叫"删除文件或文件夹时出错"(内容是无法删除XX文件,文件被下列程序使用!),然后才会弹出自己写的这个对话框(即删除失败,请先解锁!),感觉很不顺!请教一下,能否禁用狐表本身的那个错误提示?或者提前检测一下某个文件是否处于打开状态?


--  作者:cpayinyuan
--  发布时间:2009/8/8 14:39:00
--  
以下是引用hnaysx在2009-8-8 14:19:00的发言:

我感觉这个对话框很好啊 都提示你什么程序在用了

     这个对话框是挺好,绝大多数情况下都很有用.但在某些特殊情况下,我不需要有这个提示.例如,我在系统退出时,把项目中使用的一些临时文件自动删除掉,如果正在使用,则忽略.这样的情况下,出现对话框是很别扭的!


--  作者:cpayinyuan
--  发布时间:2009/8/8 18:15:00
--  

请贺老师帮忙解决一下。


--  作者:狐狸爸爸
--  发布时间:2009/8/8 18:16:00
--  
不要提示就这样:

Try
    FileSys.DeleteFile("c:\\data\\fox2.jpg", 3, 3)
Catch ex As System.IO.IOException
End Try
--  作者:cpayinyuan
--  发布时间:2009/8/9 10:41:00
--  
以下是引用狐狸爸爸在2009-8-8 18:16:00的发言:
不要提示就这样:

Try
    FileSys.DeleteFile("c:\\data\\fox2.jpg", 3, 3)
Catch ex As System.IO.IOException
End Try

   即使这样,在删除处于打开状态下的文件时,仍然会弹出一个Foxtable的对话框,名字叫"删除文件或文件夹时出错"(内容是无法删除XX文件,文件被下列程序使用!)  感觉很不顺!
   请教一下,能否禁用狐表本身的那个错误提示?或者提前检测一下某个文件是否处于打开状态?

[此贴子已经被作者于2009-8-9 10:41:12编辑过]

--  作者:cpayinyuan
--  发布时间:2009/8/9 19:39:00
--  
  难道这个小问题没有办法解决?
--  作者:狐狸爸爸
--  发布时间:2009/8/10 7:57:00
--  

标准代码:

Try
    Dim aa As New System.IO.FileStream("c:\\book1.xls", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
    aa.Dispose()
    messagebox.show("没有人打开")
Catch ex As Exception
    messagebox.show("有人打开")
End Try


--  作者:yangming
--  发布时间:2009/8/10 12:15:00
--  
以下是引用狐狸爸爸在2009-8-10 7:57:00的发言:

标准代码:

Try
    Dim aa As New System.IO.FileStream("c:\\book1.xls", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
    aa.Dispose()
    messagebox.show("没有人打开")
Catch ex As Exception
    messagebox.show("有人打开")
End Try

收藏,慢慢研究!


--  作者:cpayinyuan
--  发布时间:2009/8/10 12:48:00
--  

谢谢!我先试一下!