如何检查输入的文件名是否包含无效字符

时间:2009-07-13 04:49:37

标签: vb6

如何检查文本框中输入的文件名是否有效?

在文本框中我输入或从本地机器或远程机器中选择路径和文件名,一旦我选择了文件名,我想检查输入的文件名是否有任何无效的charcaters。 我不能像textbox =“Selected Path”那样给出,因为我可以从本地机器或远程机器中选择一个文件,但文件名是相同的。

3 个答案:

答案 0 :(得分:1)

根据稍后发布的评论进行编辑:

如果文件名在Windows上有效,请检查文件名....

由于Windows体系结构的不同,有效文件名的定义可能会因您正在处理的操作系统和文件系统的组件而异。

NTFS文件系统是命名文件中最慷慨的。该名称最长可达32,768个Unicode字符。该名称可以包含尾随句点,尾随空格,并且两个文件的名称可能仅在例如README.TXT和readme.txt的情况下有所不同。

在Win32子系统上,名称长度最多为MAX_PATH个字符(在windef.h中定义为260个字符),可能没有尾随点或空格,文件名不区分大小写。

DOS和16位Windows应用程序仍然限制为8个字符的文件名加上3个字符的扩展名。

根据操作系统,您可以在VB代码中应用条件检查以验证文件名是否有效,或者您可以提供正则表达式来验证文件名。但是,如果您想要精确,那么请参阅书籍或其他来源,以获取有关文件名的不同约束的更多信息。

答案 1 :(得分:-1)

你为什么要这样做?如果您使用Common Dialog Control ActiveX从本地/远程计算机打开文件,它将更加直观且易于使用。

编辑:如果要检查文件是否存在,可以使用此功能:

Function FileExist(file As String) As Boolean
    On Error GoTo Error
    'get the file attributes, and make sure what
    'is being passed isnt a directory
    FileExist = (GetAttr(file) And vbDirectory) = 0
Error:
    'Return False if an error occurs
    FileExist = False
End Function

答案 2 :(得分:-1)

Function FileExists(FilePath as string) as Boolean
   On error goto Err
   Dim smtg
   FileExists=True
   smtg=GetAttr(FilePath)  'Here will cause an error if file is missing, and will go to Err:
   Exit Function
 Err:
   FileExists=True
End Function