#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
.