以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于 DeleteDirectory (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63130) |
-- 作者:zhsenchzhi -- 发布时间:2015/1/14 15:22:00 -- 关于 DeleteDirectory 执行 FileSys 的 DeleteDirectory时, 有个参数 showUI, 他有两个选项: 2: 只显示错误对话框,隐藏进度对话框 请问我想在执行时 不报错误 怎么办? 就是即使删除时出现错误,也不要报出来,直接再往下执行,该怎样实现? |
-- 作者:Bin -- 发布时间:2015/1/14 15:23:00 -- 利用try catch |
-- 作者:zhsenchzhi -- 发布时间:2015/1/14 16:37:00 -- 用try 不行呀,代码如下, 意思是,每次 启动项目时,先检查一个 temp 目录是否存在,如果不存在,就创建它, 如果 存在,就把它下面的 内容都删除,使用了 try之后,还是 以对话框的形式 报以下错误,请问有那种不用对话框报错的吗? 否则用户体验不好, 我的意思是,即使删除不了文件夹,可以不删除,但是不要以对话框的形式报错 If FileSys.DirectoryExists(ProjectPath & "Temp") = False Then FileSys.CreateDirectory(ProjectPath & "Temp") End If If FileSys.DirectoryExists(ProjectPath & "Temp") = True Then Dim fi As FileInfo = new Fileinfo(ProjectPath & "Temp") If fi.Hidden= False Then fi.Hidden=True End If End If If FileSys.DirectoryExists(ProjectPath & "Temp") = True Then For Each dir As String In FileSys.GetDirectories(ProjectPath & "Temp") Try FileSys.DeleteDirectory(dir,2,3) Catch ex As Exception End Try Next End If If FileSys.DirectoryExists(ProjectPath & "Temp") = True Then For Each f As String In FileSys.GetFiles(ProjectPath & "Temp") Try FileSys.DeleteFile(f) Catch ex As Exception End Try Next End If |
-- 作者:Bin -- 发布时间:2015/1/14 16:43:00 -- 用了Try没道理还弹出这种错误框,是你其他地方的代码报错的把 你把整个代码用TRY套住看看
|
-- 作者:zhsenchzhi -- 发布时间:2015/1/14 16:49:00 -- 就是这个地方的代码,你自己可以试试这段代码, 稍微修改一下,事实上不仅这个地方,还有很多地方都是这样, 例如 之前用vba来关闭和保存一个excel文件,对于低版本的excel,会报以下错误,同样是用 try给包括进来的,在例如连接短信猫时,用try包住,如果连接异常,仍然 会用对话框报错 excel报错如下 操作excel的代码如下,很明显都有try 给包住了 try \'oDocument.cancel oDocument.save oDocument.Saved = True Catch ex As Exception \'MessageBox.Show("追加数据失败") End Try try oDocument.close Catch ex As Exception \'MessageBox.Show("追加数据失败") End Try End If try oDocument.delete Catch ex As Exception \'MessageBox.Show("追加数据失败") End Try |
-- 作者:Bin -- 发布时间:2015/1/14 16:53:00 -- 这种错误对话框是会有的. 3楼第一张图那种不会有. 具体的问题,具体解决吧. 你这个当前版本Excel不支持你表中的一些功能导致的吧
|
-- 作者:有点甜 -- 发布时间:2015/1/14 16:59:00 -- 呃,那种方法不支持try catch,你研究一下 System.IO.File 的delete方法吧
http://msdn.microsoft.com/zh-cn/library/system.io.file.delete.aspx
http://www.cnblogs.com/wggWeb/archive/2012/02/24/2364521.html
|
-- 作者:zhsenchzhi -- 发布时间:2015/1/15 9:42:00 -- 从这两个网页上也看不出什么来,我想问一下,是不是删除一个空目录,就不会出现上面的提示信息了? 你的意思是不是让我写一个递归,先把目录里面的 文件夹和文件清空,然后再删除这个空文件夹? |
-- 作者:有点甜 -- 发布时间:2015/1/15 10:08:00 -- 回复8楼,是的,用递归一个一个的删除文件,如果删除某个文件出错的话,是可以用try catch捕捉到的,如果出错,你可以不删除此文件。 |
-- 作者:Bin -- 发布时间:2015/1/15 10:09:00 -- try System.IO.Directory.Delete("文件夹地址",True) catch End try 测试没有问题,文件被占用也不会报错
|