2017-02-05 1 views
0

Я пытаюсь получить все каталоги в пути. Например, от a/b/c/d.e я хотел бы получить a, a/b и a/b/c. Я могу достичь этого, вызывая функции, такие как posix dirname несколько раз. Проблема заключается в таких путях, как a/b/c/. Я хотел бы получить a, a/b и a/b/c. Поскольку существует /, следующий за c, c должен быть каталогом, который я хотел бы перечислить. Но функции, подобные dirname, возвращают a/b вместо a/b/c при выставлении a/b/c/ в качестве входных данных.Безопасно ли разделение пути на '/' для его анализа?

Могу ли я просто поделить на /, чтобы получить список каталогов или есть ли край, где это не сработает?

ответ

1

Только особые случаи я знаю,

  1. с именем файла в конце
  2. с / в конце
  3. с именем папки под названием a.e (может или быть не в конце)
  4. символьная ссылка
  5. путь для Windows (который использует \, но я думаю, что это не прилагая в вашем случае)
  6. Ошибка ввода пользователя, положите несколько /. например /tmp//something, который поддерживается в некоторых программах

Если ваша функция поддерживает все вышеуказанные случаи, я думаю, что это нормально.

Смежные вопросы