nio2: обнаружить «..» и подобные элементы

Я хочу использовать переданную мне строку в качестве параметра в качестве элемента имени пути. Я не хочу, чтобы меня беспокоили «Маленькие столы Бобби». То есть я не хочу, чтобы «..» было приемлемым. Я хочу, чтобы это работало с произвольным NIO2 FileSystem, поэтому просто искать строку .. недостаточно. Я могу сделать некоторые проверки, такие как !path.isAbsolute() и path.getNameCount() == 1, чтобы отфильтровать другие проблемные случаи, но могу ли я сделать что-нибудь, кроме как передать его resolve и искать неверный счетчик имен, чтобы определить, имеет ли он семантику ..?


person bmargulies    schedule 11.05.2016    source источник


Ответы (1)


к реальному пути ()

В основном ответ. Метод пути после разрешения дает вам реальный путь после разрешения родителя (например, «..») и ссылок.

Затем вы можете использовать root.startsWith( path ), чтобы быстро проверить, находится ли он в вашем поддереве.

Но: Работает только для существующих файлов.

person openCage    schedule 13.03.2017