以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于 DeleteDirectory  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=63130)

--  作者:zhsenchzhi
--  发布时间:2015/1/14 15:22:00
--  关于 DeleteDirectory
执行 FileSys 的 DeleteDirectory时, 有个参数  showUI, 他有两个选项:

2: 只显示错误对话框,隐藏进度对话框
3: 显示进度对话框和所有错误对话框。


请问我想在执行时 不报错误 怎么办?  就是即使删除时出现错误,也不要报出来,直接再往下执行,该怎样实现?


--  作者:Bin
--  发布时间:2015/1/14 15:23:00
--  
利用try  catch


--  作者:zhsenchzhi
--  发布时间:2015/1/14 16:37:00
--  
用try 不行呀,代码如下, 意思是,每次 启动项目时,先检查一个 temp 目录是否存在,如果不存在,就创建它, 如果 存在,就把它下面的 内容都删除,使用了 try之后,还是 以对话框的形式 报以下错误,请问有那种不用对话框报错的吗? 否则用户体验不好, 我的意思是,即使删除不了文件夹,可以不删除,但是不要以对话框的形式报错


图片点击可在新窗口打开查看此主题相关图片如下:134.png
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:178.png
图片点击可在新窗口打开查看



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报错如下

图片点击可在新窗口打开查看此主题相关图片如下:189.png
图片点击可在新窗口打开查看


操作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

测试没有问题,文件被占用也不会报错