Ono*_*cci 159
1.)点击这里.基本上这样做:
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
Run Code Online (Sandbox Code Playgroud)
我会留给你找出所需的各种错误处理,但这些都是我正在考虑的错误处理事项之一:
2.)如何删除文件.看看这个. 基本上使用Kill命令,但您需要允许文件是只读的.这是给你的功能:
Sub DeleteFile(ByVal FileToDelete As String)
If FileExists(FileToDelete) Then 'See above
' First remove readonly attribute, if set
SetAttr FileToDelete, vbNormal
' Then delete the file
Kill FileToDelete
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
再次,我将把错误处理留给你,这些是我要考虑的事情:
对于目录与文件,这种行为应该不同吗?用户是否必须明确表示要删除目录?
您是否希望代码自动重置只读属性,或者是否应该向用户提供某种指示,即只设置了只读属性?
编辑:将此答案标记为社区维基,以便任何人都可以根据需要进行修改.
Mik*_*use 50
对Brettski的答案进行编码的另一种方法可能是完全同意的
With New FileSystemObject
If .FileExists(yourFilePath) Then
.DeleteFile yourFilepath
End If
End With
Run Code Online (Sandbox Code Playgroud)
相同的效果但更少(好吧,根本没有)变量声明.
FileSystemObject是一个非常有用的工具,非常值得友好.除了其他任何东西,对于文本文件编写,它实际上有时可能比传统的替代方案更快,这可能会让一些人感到惊讶.(至少根据我的经验,YMMV).
Joh*_*nFx 13
我可能会因此而受到抨击,但如果您要删除它,那么测试存在的重点是什么?我的一个主要的烦恼是一个应用程序抛出一个错误对话框,如"无法删除文件,它不存在!"
On Error Resume Next
aFile = "c:\file_to_delete.txt"
Kill aFile
On Error Goto 0
return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.
Run Code Online (Sandbox Code Playgroud)
如果文件首先不存在,任务就完成了!
Ric*_*ams 10
以下内容可用于测试文件是否存在,然后将其删除.
Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
Run Code Online (Sandbox Code Playgroud)
在VB中它通常Dir会找到该文件的目录.如果它不是空白则存在然后用于Kill删除文件.
test = Dir(Filename)
If Not test = "" Then
Kill (Filename)
End If
Run Code Online (Sandbox Code Playgroud)
设置对Scripting.Runtime库的引用,然后使用FileSystemObject:
Dim fso as New FileSystemObject, aFile as File
if (fso.FileExists("PathToFile")) then
aFile = fso.GetFile("PathToFile")
aFile.Delete
End if
Run Code Online (Sandbox Code Playgroud)