Foxtable(狐表)用户栏目专家坐堂 → 利用FileSys.DeleteFile删除文件时,怎么提前判断文件是否处于打开状态?


  共有18698人关注过本帖树形打印复制链接

主题:利用FileSys.DeleteFile删除文件时,怎么提前判断文件是否处于打开状态?

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
利用FileSys.DeleteFile删除文件时,怎么提前判断文件是否处于打开状态?  发帖心情 Post By:2009/8/8 10:34:00 [只看该作者]

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/8/8 14:39:00 [只看该作者]

以下是引用hnaysx在2009-8-8 14:19:00的发言:

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/8/8 18:15:00 [只看该作者]

请贺老师帮忙解决一下。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/8/8 18:16:00 [只看该作者]

不要提示就这样:

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

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/8/9 19:39:00 [只看该作者]

  难道这个小问题没有办法解决?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47477 积分:251256 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/8/10 12:48:00 [只看该作者]

谢谢!我先试一下!


 回到顶部