在“/”上拆分路径来解析它是否安全?

Is it safe to split a path on '/' to parse it?

我正在尝试获取路径中的所有目录。例如,从 a/b/c/d.e 我想得到 aa/ba/b/c。我可以通过多次调用 posixdirname 之类的函数来实现这一点。问题出在像 a/b/c/ 这样的路径上。我想要 aa/ba/b/c。由于c后面有一个/c应该是我想列出的目录。但是当给定 a/b/c/ 作为输入时,函数像 dirname return a/b 而不是 a/b/c

我能否在 / 上拆分以获取目录列表,或者是否存在这种方法不起作用的极端情况?

我知道的唯一特例是

  1. 以文件名结尾
  2. 结尾有一个/
  3. 文件夹名称为 a.e(末尾可能有也可能没有)
  4. 象征性的link
  5. Windows 路径(正在使用 \ 但我认为它不适用于您的情况)
  6. 用户输入错误,输入多个/。例如/tmp//something 某些程序支持

如果你的功能支持以上所有情况,我觉得就可以了。