Private Const MAX_PATH As Long = 260
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long
Private Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const INVALID_HANDLE_VALUE = -1
Public Function IsFileExists(sFileName As String) As Boolean
Dim f%
On Error GoTo handleError
If sFileName <> "" Then
f% = FreeFile
Open sFileName For Input As #f%
Close #f%
IsFileExists = True
Else
IsFileExists = False
End If
Exit Function
handleError:
IsFileExists = False
End Function
Public Function DoesFileExistEx(ByVal sFile As String) As Boolean
Dim FindData As WIN32_FIND_DATA
Dim GetFile As Long
GetFile = FindFirstFile(sFile, FindData)
If GetFile <> INVALID_HANDLE_VALUE Then
If (FindData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
DoesFileExistEx = False '目录
Else
DoesFileExistEx = True
End If
Else
DoesFileExistEx = False
End If
FindClose GetFile
End Function
Public Function DoesFolderExistEx(ByVal sFile As String) As Boolean
Dim FindData As WIN32_FIND_DATA
Dim GetFile As Long
GetFile = FindFirstFile(sFile, FindData)
If GetFile <> INVALID_HANDLE_VALUE Then
If (FindData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
DoesFolderExistEx = True '目录
Else
DoesFolderExistEx = False
End If
Else
DoesFolderExistEx = False
End If
FindClose GetFile
End Function
26 个解决方案
#1
边抢分,边学习!!!
好好学习,天天向上!!!
好好学习,天天向上!!!
#2
收藏
#3
hehe
#4
????
#5
楼上有什么问题吗?
#6
学习
#7
这样处理是是在滥用VB!!!!!!!!!!!!!!
VB的dir函数很好用
dir(pathname,16),就可以判断目录是否存在 (返回空值就不存在)
dir(pathname,0),就可以判断文件是否存在 (返回空值就不存在)
根本不需要那么多行,还居然用到了API?!
另外,使用错误处理来文件是否存在这样简单的问题是程序设计中
的非常非常坏的习惯。
#8
楼上的朋友说的没错,Dir函数既简单又有效,和不用之
#9
dir就行了,
#10
to: tuppin(熊王)
如果按照你的方法,
◇首先:
标准的vbDirectory放着不用,要硬编码使用16?
标准的vbNormal放着不用,要硬编码使用0?
如果vb改变了常量值,你的代码不是要改么?
◇其次,
你判断的是给定目录的属性“是”vbDirectory(目录)
我这里判断是给定目录的属性“有”vbDirectory(目录)
当目录含有不只一个属性,如隐藏、系统等其它属性的时候,你的判断是不全面的。
详细请参考:
关于判断文件/文件夹是否存在:
http://www.csdn.net/expert/topic/375/375537.xml
不经过认真测试和学习,而来否定别人的方法,才是非常坏的习惯吖!
我纯粹是在讨论技术,别在意。
如果按照你的方法,
◇首先:
标准的vbDirectory放着不用,要硬编码使用16?
标准的vbNormal放着不用,要硬编码使用0?
如果vb改变了常量值,你的代码不是要改么?
◇其次,
你判断的是给定目录的属性“是”vbDirectory(目录)
我这里判断是给定目录的属性“有”vbDirectory(目录)
当目录含有不只一个属性,如隐藏、系统等其它属性的时候,你的判断是不全面的。
详细请参考:
关于判断文件/文件夹是否存在:
http://www.csdn.net/expert/topic/375/375537.xml
不经过认真测试和学习,而来否定别人的方法,才是非常坏的习惯吖!
我纯粹是在讨论技术,别在意。
#11
等一下来结帖子
#12
也可以用写文件再删除文件,然后捕捉错误的方法 不过不好
#13
不错
#14
真好:)
#15
而且,使用API是为了“更加肯定地”返回正确结果。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
#16
而且,使用API是为了“更加肯定地”返回正确结果。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
#17
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal lpszPath As String) As Long
Public Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal lpszPath As String) As Long
If PathFileExists(<文件名>) <> 0 And PathIsDirectory(<文件名>) = 0 Then 文件存在。
PathFileExists 判断文件、目录是否存在,PathIsDirectory 判断目录是否存在。返回非零值表示存在。上面的判断语句判断<文件名>是否存在,并且确认它不是目录。
系统兼容性:
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
Public Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal lpszPath As String) As Long
If PathFileExists(<文件名>) <> 0 And PathIsDirectory(<文件名>) = 0 Then 文件存在。
PathFileExists 判断文件、目录是否存在,PathIsDirectory 判断目录是否存在。返回非零值表示存在。上面的判断语句判断<文件名>是否存在,并且确认它不是目录。
系统兼容性:
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
#18
致enmity (灵感之源)
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,是存在还是不存在这个问题,Dir如何作不到?dir又如何不能给出一个更加肯定的结果呢?
同样使用DIR,就以你给出的三个函数的入口和返回值为标准,写出的代码一定
比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了,
干嘛用VB.
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,是存在还是不存在这个问题,Dir如何作不到?dir又如何不能给出一个更加肯定的结果呢?
同样使用DIR,就以你给出的三个函数的入口和返回值为标准,写出的代码一定
比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了,
干嘛用VB.
#19
致enmity (灵感之源)
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值都是各占1bit,可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,
是存在还是不存在这个问题,Dir()如何作不到?
dir()又如何不能给出一个更加肯定的结果呢?
同样使用DIR(),就以你给出的三个函数的入口和返回值为标准,
(如果你要求更多的功能,就没法讨论了)
写出的代码一定比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了。
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值都是各占1bit,可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,
是存在还是不存在这个问题,Dir()如何作不到?
dir()又如何不能给出一个更加肯定的结果呢?
同样使用DIR(),就以你给出的三个函数的入口和返回值为标准,
(如果你要求更多的功能,就没法讨论了)
写出的代码一定比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了。
#20
不错。。。。。CSDN就是要有这样的好人
各位高手,得了吧,人家不是出题让你们来挑毛病的,任何一个方法都不可能尽善,想得太多的话,就什么也别做了,点到为止!!!
这里讨论的是实现问题,不是怎么实现更好的问题,
打个比方说:明明知道坐飞机可以到美国,我偏偏要用筋斗云,俺老孙
玩的就是这个。。。。。。。。。。。。。。。。。。。。
你们这样会打消人家的积极性的!!!
唉!!!
总有人。。。。。。。。
各位高手,得了吧,人家不是出题让你们来挑毛病的,任何一个方法都不可能尽善,想得太多的话,就什么也别做了,点到为止!!!
这里讨论的是实现问题,不是怎么实现更好的问题,
打个比方说:明明知道坐飞机可以到美国,我偏偏要用筋斗云,俺老孙
玩的就是这个。。。。。。。。。。。。。。。。。。。。
你们这样会打消人家的积极性的!!!
唉!!!
总有人。。。。。。。。
#21
喜欢抬杠。。。。。。。。。。。。。
#22
好好学习,天天向上
你的比方不恰当,应该是明明坐飞机可以到美国,偏要说先
坐火车到俄罗斯,然后作破冰船过白令海峡,还得作一段爬犁穿过阿拉斯加,
然后再……
我只是觉得这个方法容易误导一些VB程序员,以为使用了API就是上了个
层次……
你的比方不恰当,应该是明明坐飞机可以到美国,偏要说先
坐火车到俄罗斯,然后作破冰船过白令海峡,还得作一段爬犁穿过阿拉斯加,
然后再……
我只是觉得这个方法容易误导一些VB程序员,以为使用了API就是上了个
层次……
#23
我同意熊王的,因为我就常用DIR(),api我也是为了程序精练才用,要是本例也用API,那也太长了吧?而且又不像enmity(灵感之源)兄说的可以“更肯定的”。因为我也看不出来这两种方式的效果上谁比谁更好。
#24
靠,小弟错了还不行呀,小弟以后不敢就是了,
我不过是说,csdn中的东西,是精髓还是糟粕,你自己批判的吸收,
大家这样讲话,会伤害人家的heart的
我不过是说,csdn中的东西,是精髓还是糟粕,你自己批判的吸收,
大家这样讲话,会伤害人家的heart的
#25
enmity(灵感之源)
谢谢你的代码
谢谢你的代码
#26
分 分分分分分
分 分 分分
分分分分分 分 分分分分
分 分 分 分分分分
分 分 分 分分分分
分 分分分分分分分 分分
分 分 分 分分
分分 分 分
分分 分 分分
分 分 分 分分
分 分分
#1
边抢分,边学习!!!
好好学习,天天向上!!!
好好学习,天天向上!!!
#2
收藏
#3
hehe
#4
????
#5
楼上有什么问题吗?
#6
学习
#7
这样处理是是在滥用VB!!!!!!!!!!!!!!
VB的dir函数很好用
dir(pathname,16),就可以判断目录是否存在 (返回空值就不存在)
dir(pathname,0),就可以判断文件是否存在 (返回空值就不存在)
根本不需要那么多行,还居然用到了API?!
另外,使用错误处理来文件是否存在这样简单的问题是程序设计中
的非常非常坏的习惯。
#8
楼上的朋友说的没错,Dir函数既简单又有效,和不用之
#9
dir就行了,
#10
to: tuppin(熊王)
如果按照你的方法,
◇首先:
标准的vbDirectory放着不用,要硬编码使用16?
标准的vbNormal放着不用,要硬编码使用0?
如果vb改变了常量值,你的代码不是要改么?
◇其次,
你判断的是给定目录的属性“是”vbDirectory(目录)
我这里判断是给定目录的属性“有”vbDirectory(目录)
当目录含有不只一个属性,如隐藏、系统等其它属性的时候,你的判断是不全面的。
详细请参考:
关于判断文件/文件夹是否存在:
http://www.csdn.net/expert/topic/375/375537.xml
不经过认真测试和学习,而来否定别人的方法,才是非常坏的习惯吖!
我纯粹是在讨论技术,别在意。
如果按照你的方法,
◇首先:
标准的vbDirectory放着不用,要硬编码使用16?
标准的vbNormal放着不用,要硬编码使用0?
如果vb改变了常量值,你的代码不是要改么?
◇其次,
你判断的是给定目录的属性“是”vbDirectory(目录)
我这里判断是给定目录的属性“有”vbDirectory(目录)
当目录含有不只一个属性,如隐藏、系统等其它属性的时候,你的判断是不全面的。
详细请参考:
关于判断文件/文件夹是否存在:
http://www.csdn.net/expert/topic/375/375537.xml
不经过认真测试和学习,而来否定别人的方法,才是非常坏的习惯吖!
我纯粹是在讨论技术,别在意。
#11
等一下来结帖子
#12
也可以用写文件再删除文件,然后捕捉错误的方法 不过不好
#13
不错
#14
真好:)
#15
而且,使用API是为了“更加肯定地”返回正确结果。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
#16
而且,使用API是为了“更加肯定地”返回正确结果。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
我并不是不想用现成的内置函数,只不过,有些时候,内置函数不大能胜任,我就选择使用API了。这是个人做法问题,您可以按照自己的实际情况使用您喜欢的方法。
谢谢参与讨论。
#17
Public Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal lpszPath As String) As Long
Public Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal lpszPath As String) As Long
If PathFileExists(<文件名>) <> 0 And PathIsDirectory(<文件名>) = 0 Then 文件存在。
PathFileExists 判断文件、目录是否存在,PathIsDirectory 判断目录是否存在。返回非零值表示存在。上面的判断语句判断<文件名>是否存在,并且确认它不是目录。
系统兼容性:
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
Public Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal lpszPath As String) As Long
If PathFileExists(<文件名>) <> 0 And PathIsDirectory(<文件名>) = 0 Then 文件存在。
PathFileExists 判断文件、目录是否存在,PathIsDirectory 判断目录是否存在。返回非零值表示存在。上面的判断语句判断<文件名>是否存在,并且确认它不是目录。
系统兼容性:
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
#18
致enmity (灵感之源)
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,是存在还是不存在这个问题,Dir如何作不到?dir又如何不能给出一个更加肯定的结果呢?
同样使用DIR,就以你给出的三个函数的入口和返回值为标准,写出的代码一定
比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了,
干嘛用VB.
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,是存在还是不存在这个问题,Dir如何作不到?dir又如何不能给出一个更加肯定的结果呢?
同样使用DIR,就以你给出的三个函数的入口和返回值为标准,写出的代码一定
比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了,
干嘛用VB.
#19
致enmity (灵感之源)
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值都是各占1bit,可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,
是存在还是不存在这个问题,Dir()如何作不到?
dir()又如何不能给出一个更加肯定的结果呢?
同样使用DIR(),就以你给出的三个函数的入口和返回值为标准,
(如果你要求更多的功能,就没法讨论了)
写出的代码一定比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了。
我用0和16只是想描述简单一些,主要目的不是讨论编程风格,而是讨论实现技术。
dir的第二个参数包含了隐藏,只读,系统等等属性,
0也好,16也好,它们都是2的指数,
这种属性值都是各占1bit,可以“或”在一起用。
在请你告诉我,就判断一个Pathname到底是文件还是目录,
是存在还是不存在这个问题,Dir()如何作不到?
dir()又如何不能给出一个更加肯定的结果呢?
同样使用DIR(),就以你给出的三个函数的入口和返回值为标准,
(如果你要求更多的功能,就没法讨论了)
写出的代码一定比你的短和可靠,同时更易读,你相信吗?
我并不反对使用API,在我的程序中只有万不得以才使用,否则直接用C/C++好了。
#20
不错。。。。。CSDN就是要有这样的好人
各位高手,得了吧,人家不是出题让你们来挑毛病的,任何一个方法都不可能尽善,想得太多的话,就什么也别做了,点到为止!!!
这里讨论的是实现问题,不是怎么实现更好的问题,
打个比方说:明明知道坐飞机可以到美国,我偏偏要用筋斗云,俺老孙
玩的就是这个。。。。。。。。。。。。。。。。。。。。
你们这样会打消人家的积极性的!!!
唉!!!
总有人。。。。。。。。
各位高手,得了吧,人家不是出题让你们来挑毛病的,任何一个方法都不可能尽善,想得太多的话,就什么也别做了,点到为止!!!
这里讨论的是实现问题,不是怎么实现更好的问题,
打个比方说:明明知道坐飞机可以到美国,我偏偏要用筋斗云,俺老孙
玩的就是这个。。。。。。。。。。。。。。。。。。。。
你们这样会打消人家的积极性的!!!
唉!!!
总有人。。。。。。。。
#21
喜欢抬杠。。。。。。。。。。。。。
#22
好好学习,天天向上
你的比方不恰当,应该是明明坐飞机可以到美国,偏要说先
坐火车到俄罗斯,然后作破冰船过白令海峡,还得作一段爬犁穿过阿拉斯加,
然后再……
我只是觉得这个方法容易误导一些VB程序员,以为使用了API就是上了个
层次……
你的比方不恰当,应该是明明坐飞机可以到美国,偏要说先
坐火车到俄罗斯,然后作破冰船过白令海峡,还得作一段爬犁穿过阿拉斯加,
然后再……
我只是觉得这个方法容易误导一些VB程序员,以为使用了API就是上了个
层次……
#23
我同意熊王的,因为我就常用DIR(),api我也是为了程序精练才用,要是本例也用API,那也太长了吧?而且又不像enmity(灵感之源)兄说的可以“更肯定的”。因为我也看不出来这两种方式的效果上谁比谁更好。
#24
靠,小弟错了还不行呀,小弟以后不敢就是了,
我不过是说,csdn中的东西,是精髓还是糟粕,你自己批判的吸收,
大家这样讲话,会伤害人家的heart的
我不过是说,csdn中的东西,是精髓还是糟粕,你自己批判的吸收,
大家这样讲话,会伤害人家的heart的
#25
enmity(灵感之源)
谢谢你的代码
谢谢你的代码
#26
分 分分分分分
分 分 分分
分分分分分 分 分分分分
分 分 分 分分分分
分 分 分 分分分分
分 分分分分分分分 分分
分 分 分 分分
分分 分 分
分分 分 分分
分 分 分 分分
分 分分