删除文件会导致无法解决的错误

时间:2009-11-11 18:16:39

标签: vb.net

在我的应用程序中,我必须复制然后从存储卡中删除图像文件,当一些卡无意中使用“锁定”开关将其转为只读时,问题就出现了。

尝试删除这些文件时,我想记录删除失败但在我选择之前不显示任何UI消息。

以下是我遇到问题的一些示例代码。

Sub Main()
    Try
        System.IO.File.Delete("K:\BYZTCSQ_0050.JPG")
    Catch ex As Exception
        'Error would be logged here
    End Try
End Sub

这在debuging工作正常,即它试图删除文件,如果没有捕获错误,我可以将其作为nessecary处理,但是当我构建并运行应用程序时,我收到一条错误消息,告诉我该文件不能删除。

要测试此代码,您需要一个可以物理设置为只读的驱动器(USB存储钥匙,SD卡),并尝试在调试时和构建后删除其中的文件。

为什么相同的代码运行方式不同,如何停止多余的错误消息?

2 个答案:

答案 0 :(得分:1)

您可以尝试在存储卡上创建文件。由于Microsoft(或非)已知的原因,在受复制保护的驱动器上创建文件将在Try块中引发错误条件,而删除文件则不会。顺便说一句,我得到了同样奇怪的结果 - 在调试模式下捕获删除工作正常,但不是从.exe。

Imports System.IO
...
Try
  fs = File.Create(drive & "\tmp.~tmp")
Catch ex As Exception
  copyprotected = true
End Try

if not copyprotected then 
  file.delete(drive & "\tmp.~tmp")
  file.delete(the file you wanted to in the first place)
end if

答案 1 :(得分:-1)

不是将其包装在try / catch块中,而是在尝试执行删除之前测试文件是否存在:

Dim strFilePath as String = "K:\BYZTCSQ_0050.JPG"
If File.Exists(strFilePath) Then
   System.IO.File.Delete(strFilePath)
End If