如何判断字符串是否是合法文件路径

zlhere 2008-11-06 04:26:37
如题
文件或者路径可以不存在 但是要合法
有方法直接判断吗?
还是要自己写?
...全文
1976 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
soloist007 2008-11-24
  • 打赏
  • 举报
回复
用正则表达式
Jessie_Zhang 2008-11-07
  • 打赏
  • 举报
回复
同意楼上的,我也正正想说,存在的就是合法的.只须判断path存不存在即可.

If Not File.Exists(FilePath) Then
HandleError("file can not be found.")
End If
skigil 2008-11-07
  • 打赏
  • 举报
回复
既然是文件路径,只要能判断其存不存在,就无所谓合法不合法了
在使用的时候,如果这个路径存在,则一定合法,如果不存在,可能是不合法可能真的不存在
直接用file.exist(filepath)最好
若为1,则文件路径合法
若为0,则可能不存在或者可能不合法
水如烟 2008-11-07
  • 打赏
  • 举报
回复
可以看New FileInfo能否正常执行即可

    Public Function InvalidPath(ByVal path As String) As Boolean
Dim result As Boolean = True
Dim err As String = ""

Try
Dim info As New System.IO.FileInfo(path)
Catch ex As Exception
result = False
err = "err:" & ex.Message
End Try

Console.WriteLine("{0} {1} {2}", result, path, err)

Return result
End Function

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
InvalidPath("c:\sdfsdfsdfsdfffffffffffffffffffffffffffff")
InvalidPath("c:\dfdfd/fd*fd%dfdfd")
InvalidPath("c:\dfdsfsdr45r454gsd0gu0fgu0dfugdfglkdfnglrkjtlkertjlerkjtndflnkgldfkgdf.sgffgdfgdfgretrt")
InvalidPath(New String("c"c, 224))
InvalidPath(New String("c"c, 128))
End Sub


结果:
True c:\sdfsdfsdfsdfffffffffffffffffffffffffffff
False c:\dfdfd/fd*fd%dfdfd err:路径中具有非法字符。
True c:\dfdsfsdr45r454gsd0gu0fgu0dfugdfglkdfnglrkjtlkertjlerkjtndflnkgldfkgdf.sgffgdfgdfgretrt
False cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc err:指定的路径或文件名太长,或者两者都太长。完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符。
True cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
tfnpghl 2008-11-07
  • 打赏
  • 举报
回复
Dim 不能在路经中出现的字符 As String = "/=&$#@"
Dim 单字节数组 As Char() = 不能在路经中出现的字符.ToCharArray
Dim path As String = "d:\2343\345 45\2344\"'这是合法的路经
‘Dim path As String = "d:\23/43\345 45\2&44\"'这是不合法的路经
Dim str() As String = path.Split(单字节数组, StringSplitOptions.RemoveEmptyEntries)
If (str.Length - 1) = 0 Then
MsgBox("准确路经")
End If
yanlongwuhui 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dylike 的回复:]
检查路径是否存在,如果存在则合法,否则执行下一句.
尝试建立该路径,如果没有返回错误则为合法.
[/Quote]
可以考虑下
一只熊猫 2008-11-07
  • 打赏
  • 举报
回复
if not system.IO.Directory.Exists(path) then
try
建立path
catch ex As Exception
msgbox ex
end try
end if

---------
这样行么?
dylike 2008-11-07
  • 打赏
  • 举报
回复
检查路径是否存在,如果存在则合法,否则执行下一句.
尝试建立该路径,如果没有返回错误则为合法.
迈克揉索芙特 2008-11-06
  • 打赏
  • 举报
回复
注意楼主说的“文件或者路径可以不存在 但是要合法 ”
zayx88 2008-11-06
  • 打赏
  • 举报
回复
system.IO.Directory.Exists(path)
可以的。
我用过的,挺好用的!
迈克揉索芙特 2008-11-06
  • 打赏
  • 举报
回复

public static bool IsCorrectPath(string path)
{
if (Validation.IsStringNullOrEmptyOrBlank(path))
{
return false;
}
StringBuilder builder = new StringBuilder();
builder.Append(@"^(([a-zA-Z]":)|(""))(""{1}|((""{1})[^""]([^/:*?<>");
builder.Append("""");
builder.Append("|]*))+)$");
Regex regex = new Regex(builder.ToString());
return regex.IsMatch(path);
}


http://www.cnblogs.com/kiddo/archive/2008/05/08/1188800.html
迈克揉索芙特 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 zlhere 的帖子:]
如题
文件或者路径可以不存在 但是要合法
有方法直接判断吗?
还是要自己写?
[/Quote]
貌似用正则表达式更准确些
一只熊猫 2008-11-06
  • 打赏
  • 举报
回复

system.IO.Directory.Exists(path)
dlmeijianyu 2008-11-06
  • 打赏
  • 举报
回复
利用系统函数,这块的函数很多的。
查查吧。
宝_爸 2008-11-06
  • 打赏
  • 举报
回复
下面的函数可以取得文件名和目录名和sperator的字符。
你可以分别判断。
System.IO.Path.GetInvalidPathChars();
System.IO.Path.GetInvalidFileNameChars();
System.IO.Path.DirectorySeparatorChar;

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧