如何解决如何验证TCL中的文件路径?
给出一个字符串,我想知道该字符串是否代表有效的文件路径。我看过[file isfile <string>]
和[file isdirectory <string>]
,但是如果给定的字符串未指向现有文件/目录,则似乎这两个返回false
。我只是对字符串的有效性感兴趣。
解决方法
几乎每个字符串都是有效的文件路径。您可以举一些您认为无效的文件路径的例子吗?
您可以使用file pathtype
检查路径是否为绝对路径。根据您的实际需求,file split
和file 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的列表:
* : () & ^ | < > ' "
此外,Windows目录名中的尾随点也是非法的。
斜杠或反斜杠可能会引起问题,因为它们是目录分隔符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。