在“/”上拆分路径来解析它是否安全?
Is it safe to split a path on '/' to parse it?
我正在尝试获取路径中的所有目录。例如,从 a/b/c/d.e
我想得到 a
、a/b
和 a/b/c
。我可以通过多次调用 posixdirname
之类的函数来实现这一点。问题出在像 a/b/c/
这样的路径上。我想要 a
、a/b
和 a/b/c
。由于c
后面有一个/
,c
应该是我想列出的目录。但是当给定 a/b/c/
作为输入时,函数像 dirname
return a/b
而不是 a/b/c
。
我能否在 /
上拆分以获取目录列表,或者是否存在这种方法不起作用的极端情况?
我知道的唯一特例是
- 以文件名结尾
- 结尾有一个
/
- 文件夹名称为
a.e
(末尾可能有也可能没有)
- 象征性的link
- Windows 路径(正在使用
\
但我认为它不适用于您的情况)
- 用户输入错误,输入多个
/
。例如/tmp//something
某些程序支持
如果你的功能支持以上所有情况,我觉得就可以了。
我正在尝试获取路径中的所有目录。例如,从 a/b/c/d.e
我想得到 a
、a/b
和 a/b/c
。我可以通过多次调用 posixdirname
之类的函数来实现这一点。问题出在像 a/b/c/
这样的路径上。我想要 a
、a/b
和 a/b/c
。由于c
后面有一个/
,c
应该是我想列出的目录。但是当给定 a/b/c/
作为输入时,函数像 dirname
return a/b
而不是 a/b/c
。
我能否在 /
上拆分以获取目录列表,或者是否存在这种方法不起作用的极端情况?
我知道的唯一特例是
- 以文件名结尾
- 结尾有一个
/
- 文件夹名称为
a.e
(末尾可能有也可能没有) - 象征性的link
- Windows 路径(正在使用
\
但我认为它不适用于您的情况) - 用户输入错误,输入多个
/
。例如/tmp//something
某些程序支持
如果你的功能支持以上所有情况,我觉得就可以了。