如何判断一个文件是否存在?(不要以为很简单哦)

苏门答腊 2003-12-17 11:05:39
我做的几个,用filelen,对目录也反映
用open file,如果文件正被其他使用,报错
最好提供一个既简单又完美的方法。
...全文
47 点赞 收藏 32
写回复
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏门答腊 2003-12-18
搞定,结贴
回复
苏门答腊 2003-12-18
to jhzhou882(狂刀客)
请睁大你的眼睛仔细看清楚,我的要求是任意输入一个字符串,程序要能检测这个文件是不是存在。也就是说管你什么\不\,用户什么字符都有可能输入,比如?*!~#。
您的悟性也实在是___
回复
rexyudl 2003-12-18
解决了好啊!
把你那5行代码贴出来,让我也学习学习!
谢谢!
回复
jhzhou882 2003-12-18
我什么都不说了.
既然解决了

恭喜吧
回复
Maconel 2003-12-18
你打开这个帖子,在最上边和最下边都有个管理,进去了你就会给分了
那也给我点分好不好
回复
苏门答腊 2003-12-18
我只用了5行语句,不用dir

晴天,我还不会给分,你教教阿!
回复
fangyds 2003-12-18
怎么没分的啦?偶要分啊。
回复
rexyudl 2003-12-17
dir
非常简单
回复
lxcc 2003-12-17
如何判断一个文件是否存在?(不要以为很简单哦)
如果是判断存在,可以用dir
如果是判断是否正在使用,一般可以用错误处理,比如kill这个文件,然后出错,捕捉这个错误即可
Private Sub Command1_Click()
On Error GoTo errhandle
If Dir("c:\123.txt") <> "" Then
FileCopy "c:\123.txt", "c:\234.txt"
Kill "c:\123.txt"
FileCopy "c:\234.txt", "c:\123.txt"
Kill "c:\234.txt"
MsgBox "文件存在并且没有使用"
Exit Sub
Else
MsgBox "文件不存在"
Exit Sub
End If
errhandle:
MsgBox "文件正在使用"
End Sub
回复
SoHo_Andy 2003-12-17
使用FSO对象的FileExists方法

Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
MsgBox fs.FileExists("d:\aa.txt")
回复
jhzhou882 2003-12-17
其实就是很简单
Public Function Check_FileExist(sName_File As String) As Boolean

If Len(Dir(sName_File)) <> 0 Then
Check_FileExist = True
Else
Check_FileExist = False
End If

End Function

DIM FLAG AS BOOLEAN
FLAG=Check_FileExist("c:\AAA.TXT")
回复
pcwak 2003-12-17
Private Sub Command1_Click()
If Dir("c:\1.txt") = "" Then
MsgBox "不存在"
Else
MsgBox "存在"
End If
End Sub
回复
pcwak 2003-12-17
dir
回复
fangyds 2003-12-17
'This is an undocumented function! Returns non-zero if szPath is valid absolute UNC path. Accepts file, folder or network paths. Returns True for a relative path only if it exists in the current directory. (the name actually fits...)

Public Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As String) As Long
回复
海牛 2003-12-17
嘿嘿,又捡到几个API哦!
回复
hjwsir 2003-12-17
'返回True表示存在
Public Function FileExists(ByVal StrFileName As String) As Boolean
Dim intFileNum As Integer

On Error Resume Next

If Right$(StrFileName, 1) = "\" Then
StrFileName = Left$(StrFileName, Len(StrFileName) - 1)
End If

intFileNum = FreeFile
Open StrFileName For Input As intFileNum

FileExists = (Err.Number = 0)

Close intFileNum

Err.Clear
End Function
回复
jhzhou882 2003-12-17
TO (莫桑比克) 判一下是不是"\"或":"结尾先
我总觉得程序员需要一点悟性,你认为呢?
(WINDOWS 不允许文件名中包含"\,",":"等)
回复
苏门答腊 2003-12-17
现在的问题是:对于一个任意输入的字符串,open 不能打开已锁定的文件,filelen、PathFileExists 不能分辨出文件和目录,dir不能分辨出驱动器。

请认为简单的人给个完美代码?
回复
苏门答腊 2003-12-17
to jhzhou882(狂刀客)

使用IIF判断是否"\"结尾当然不是问题,关键我认为另有办法不需要这样
另外,即使判断了,同样一个c: 或 c:\还是代表驱动




使用dir方法的,如果输入一个不存在的文件名,确实能正确判断,但是输入字串“c:\”,结果是true,而非false

Private Sub Command1_Click()
If Dir("C:\", vbArchive + vbHidden + vbNormal + vbReadOnly + vbSystem) = "" Then
Print False
Else
Print True
End If
End Sub

回复
苏门答腊 2003-12-17
to jhzhou882(狂刀客)

使用IIF判断是否"\"结尾当然不是问题,关键我认为另有办法不需要这样
另外,即使判断了,同样一个c: 或 c:\还是代表驱动



回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告