如何在TCL中验证文件路径



给定一个字符串,我想知道该字符串是否表示有效的文件路径。我看过[file isfile <string>][file isdirectory <string>],但如果给定的字符串没有指向现有的文件/目录,那么这两个字符串似乎会返回false。我只是对字符串的有效性感兴趣。

几乎每个字符串都是有效的文件路径。你能举一些你认为无效文件路径的例子吗?

您可以使用file pathtype来检查路径是否为绝对路径。此外,file splitfile normalize可能很有用,这取决于您真正需要什么。

我不知道有什么特殊的方法可以做到这一点。我想你可以试试:

set fn /home/bll/mytest.txt
set fail true
if { [file exists $fn] } {
set fail false
} else {
try {
set fh [open $fn w]
set fail false
file delete $fn
} on error {err res} {
}
}

即使上述方法有效,如果使用某些字符,也可能会导致问题外部命令行中的文件名。

我去掉以下字符只是为了避免可能的命令行问题:

* : " ? < > | [:cntrl:]

我有一个清单,它可能对unix有问题:

* & [] ? ' " < > | 

这个窗口列表:

* : () & ^ |  < > ' " 

此外,尾随点对于windows目录名是非法的。

斜杠或反斜杠可能会导致问题,因为它们是目录分隔符。

相关内容

  • 没有找到相关文章

最新更新