Java — является ли один путь к файлу частью другого?

#java #file

#java #файл

Вопрос:

Мне интересно, есть ли быстрый простой способ проверить, соответствует ли путь к файлу другому пути. Например, учитывая C:FruitAppleCore , я хочу протестировать его на основе списка файлов, который содержит C:FruitApple , и быть в состоянии сказать, что он содержится в этом пути.

При написании этого вопроса мне приходит в голову, что я могу просто сравнить подстроку более длинного файла с текущим файлом.

Итак, что я хотел бы знать сейчас, есть ли какой-либо способ сделать это с файловыми объектами? Или все же было бы проще получить строковую версию каждого пути и сравнить, как указано выше. (Я все еще использую java 1.6, поэтому не могу использовать java.nio.Path;)

Ответ №1:

string1.startsWith(string2) по-прежнему проще всего.

Комментарии:

1. Действительно, зачем усложнять простую задачу! Спасибо

2. 🙂 Просто убедитесь, что каталог заканчивается косой чертой, иначе вы тоже будете совпадать C:FruitAppleJuice .

3. Это может быть проблемой, если есть символические ссылки, и вы хотите их учитывать. Но я предполагаю, что из принятия это не проблема.

4.Это может (и, следовательно, будет) сломаться. Встречный пример: /usr/someuser/apple и /usr/someuser/applejuice/ . или, если вы предпочитаете, для Windows: C:UsersSomeUserApple C:UsersSomeUserAppleJuice . Если Apple это имя файла без расширения (обычное в случае Unix, возможно в случае Windows), то вы не можете просто добавить символ разделителя пути в конец, чтобы решить проблему.

5. @MerlynMorgan-Graham: Вы неправильно поняли: я предложил добавить косую черту к более короткому файлу. /usr/someuser/apple/ будет совпадать /usr/someuser/apple/juice , но нет /usr/someuser/applejuice .