File io 删除vb6目录中的所有文件
我想知道是否有人可以帮助我使用vb6功能,该功能可以删除目录(不包括子目录)中的所有文件。我认为这应该可以:File io 删除vb6目录中的所有文件,file-io,vb6,delete-file,File Io,Vb6,Delete File,我想知道是否有人可以帮助我使用vb6功能,该功能可以删除目录(不包括子目录)中的所有文件。我认为这应该可以: Dim oFs As New FileSystemObject Dim oFolder As Folder Dim oFile As File If oFs.FolderExists(FolderSpec) Then Set oFolder = oFs.GetFolder(FolderSpec) 'caution! On Error Resume Next
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File
If oFs.FolderExists(FolderSpec) Then
Set oFolder = oFs.GetFolder(FolderSpec)
'caution!
On Error Resume Next
For Each oFile In oFolder.Files
oFile.Delete True 'setting force to true will delete a read-only file
Next
DeleteAllFiles = oFolder.Files.Count = 0
End If
End Function
我并没有测试过所有的场景,但它应该可以工作。它应该删除每个文件,如果文件被锁定或您没有访问权限,您应该会看到错误70,并且您会看到一个中止、重试或忽略框
Sub DeleteAllFilesInDir(ByVal pathName As String)
On Error GoTo errorHandler
Dim fileName As String
If Len(pathName) > 0 Then
If Right(pathName, 1) <> "\" Then pathName = pathName & "\"
End If
fileName = Dir(pathName & "*")
While Len(fileName) > 0
Kill pathName & fileName
fileName = Dir()
Wend
Exit Sub
errorHandler:
If Err.Number = 70 Then
Select Case MsgBox("Could not delete " & fileName & ". Permission denied. File may be open by another user or otherwise locked.", vbAbortRetryIgnore, "Unable to Delete File")
Case vbAbort:
Exit Sub
Case vbIgnore:
Resume Next
Case vbRetry:
Resume
End Select
Else
MsgBox "Error deleting file " & fileName & ".", vbOKOnly Or vbCritical, "Error Deleting File"
End If
End Sub
Sub-deleteAllFileIndir(ByVal路径名为字符串)
关于错误转到错误处理程序
将文件名设置为字符串
如果Len(路径名)>0,则
如果正确(路径名,1)“\”则路径名=路径名&“\”
如果结束
fileName=Dir(路径名&“*”)
而Len(文件名)>0
终止路径名和文件名
fileName=Dir()
温德
出口接头
错误处理程序:
如果错误编号=70,则
选择Case MsgBox(“无法删除”&fileName&“。权限被拒绝。文件可能被其他用户打开或以其他方式锁定。”,vbAbortRetryIgnore,“无法删除文件”)
案例B中止:
出口接头
案例vbIgnore:
下一步继续
案例vbRetry:
简历
结束选择
其他的
MsgBox“删除文件时出错”&fileName&“,”vbOKOnly或vbCritical,“删除文件时出错”
如果结束
端接头
一行,使用VB6语句
“在Microsoft Windows中,Kill支持使用多字符(*)和单字符(?)通配符来指定多个文件”
顺便说一下,我更喜欢避免使用Microsoft脚本运行时(包括FileSystemObject)。根据我的经验,它偶尔会在用户机器上被破坏,可能是因为他们的it部门对病毒心存疑虑 脚本运行时FileSystemObject的DeleteFile方法似乎也支持通配符,因为这对我来说很有用:
Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true
与@Corazu建议的方法相比,这种方法的控制力更小,但在某些情况下可能有一些实用性。我在“Dim of s As New FileSystemObject”中遇到一个错误“User Defined Type not Defined”(用户定义的类型未定义)这是因为您需要添加对FileSystemObject的引用才能使用它。但我不记得确切的引用名称是什么。“要使用FileSystemObject,您必须在项目引用对话框中为您的项目选择Microsoft脚本运行时。”根据:无需迭代文件。FileSystemObject的DeleteFile方法将接受通配符。我似乎总是过于复杂。我应该记住这一点。在Access 2000中,在Kill命令中使用
“***”
通配符将失败,即使该目录中的一个文件被锁定(或打开)。+1表示同情,因为我认为这不值得-1。虽然“Kill”&路径名&“*.*”肯定更短。
Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true