我正在考虑编写一个程序来检查路径名是否有效。
Windows下的路径名(包括相对路径)的语法是什么?我用谷歌搜索了一段时间,我只找到了关于无效路径名的个别案例的错误报告。
Linux的同样问题?虽然我大部分时间都使用Linux,但我不知道是否有定义它的标准文档。 POSIX?
感谢。
答案 0 :(得分:1)
Windows有多个层(NT,Win32,Posix / WSL)和多种路径类型,但您可能指的是DOS / Win32类型,并且该主题本身就足够复杂。
您有基本的DOS路径:
d:\dir\subdir\file
file
,.\subdir\file
和..\otherfile
\dir\subdir\file
d:file
d:\dir\..\otherdir\file
等。\\server\share\file
d:
还有一些特殊的保留名称,例如NUL
,CON
,AUX
和COM1
。
Windows NT进一步增加了并发症:
d:\dir\subdir\file:stream
\\?\d:\file
\\?\UNC\server\share\file
\\.\PhysicalDisk1
\\?\Volume{26a21bda-a627-11d7-9931-806e6f6e6963}\
如果您在较高的shell级别操作,还可以使用其他几种类型来处理:
shell:SendTo
::{someGUID}\::{anotherGUID}
大多数功能也会接受/
作为路径分隔符。甚至像d:f:s
那样疯狂的事情(文件f中的流s相对于驱动器d上的当前目录)应该被视为有效。
有关详细信息,请参阅MSDN。
另一方面,Linux仅将/
和空字节(\0
)视为特殊,并允许您在路径中使用换行符等。如果您正在处理shell脚本中的路径,则通常可以使用IFS。阅读this rant for more information。