都不太好,如果文件长度是刚好是0的话,Nicrosoft的办法就不行了,我这里有一个方法,是微软公司的Bruce McKinney使用的:
“测试一个文件的存在应该是很容易的(并且在多数语言中确是如此),但在Visual Basic中,它却成为最令人头痛的问题之一,别指望像这样就能简单的解决了:
fExist = (Dir$(sFullPath)<>Sempty)
那条语句会一直工作到你在一个空软盘或CD-ROM驱动器上指定一个文件为止,然后,你就会被一个消息框困住。这里是别一种常见的情况:
fExist = FileLen(sFullPath)
对于0长度的文件它就会失败,尽管0长度的文件不常见,却也不是闻所未闻……这里是我所知道的最简洁的方法:
Function ExistFile(sSpec as String) as Boolean
On Error Resume Next
Call fileLen(sSpec)
ExistFile=(Err=0)
End Function
这不可能有很高的效率。错误陷井对非失败情况是快速的,但是这个函数更像是恨不得没有错误。
还有一个是测试是否存在目录的:
Function ExistFileDir(sSpec as String) as Boolean
Dim af As Long
af = GetFileATTributes(sSpec)
ExistFileDir=(af<>-1)
End Function
我曾认为没有什么可以打破这一个,但事实证明某些含有控制字符的文件名在Windows 95中是佥的,而在Windows NT中则是非法的,或者这是另一条解决方法?不管怎样,我已见过这个函数失败的情形,在这里难以描述。”
“测试一个文件的存在应该是很容易的(并且在多数语言中确是如此),但在Visual Basic中,它却成为最令人头痛的问题之一,别指望像这样就能简单的解决了:
fExist = (Dir$(sFullPath)<>Sempty)
那条语句会一直工作到你在一个空软盘或CD-ROM驱动器上指定一个文件为止,然后,你就会被一个消息框困住。这里是别一种常见的情况:
fExist = FileLen(sFullPath)
对于0长度的文件它就会失败,尽管0长度的文件不常见,却也不是闻所未闻……这里是我所知道的最简洁的方法:
Function ExistFile(sSpec as String) as Boolean
On Error Resume Next
Call fileLen(sSpec)
ExistFile=(Err=0)
End Function
这不可能有很高的效率。错误陷井对非失败情况是快速的,但是这个函数更像是恨不得没有错误。
还有一个是测试是否存在目录的:
Function ExistFileDir(sSpec as String) as Boolean
Dim af As Long
af = GetFileATTributes(sSpec)
ExistFileDir=(af<>-1)
End Function
我曾认为没有什么可以打破这一个,但事实证明某些含有控制字符的文件名在Windows 95中是佥的,而在Windows NT中则是非法的,或者这是另一条解决方法?不管怎样,我已见过这个函数失败的情形,在这里难以描述。”