Я хотел бы проверить, находится ли существующий файл в определенном каталоге или в его подкаталоге.Проверьте, находится ли файл в (под) каталоге
У меня есть два объекта File.
File dir;
File file;
Оба гарантированно будут существовать. Давайте предположим, что
dir = /tmp/dir
file = /tmp/dir/subdir1/subdir2/file.txt
Я хочу, чтобы эта проверка, чтобы вернуть истинный
На данный момент я делаю чек так:
String canonicalDir = dir.getCanonicalPath() + File.separator;
boolean subdir = file.getCanonicalPath().startsWith(canonicalDir);
Это похоже на работу с моими ограниченными тестов, но я не уверен, может ли это возникнуть в некоторых операционных системах. Мне также не нравится, что getCanonicalPath() может вызывать исключение IOException, с которым я должен обращаться.
Есть ли лучший способ? Возможно, в какой-то библиотеке?
Thanks
Это может быть проблематично для путей, которые содержат такие вещи, как «/tmp/something/../dir», что возможно в моем приложении. –
Вы можете легко использовать 'child.getAbsolutePath(). StartsWith (parent.getAbsolutePath()), если это так. – rocketboy
Фактически getAbsolutePath() будет вычислять все такие маркеры «/../» и возвращать реальный абсолютный путь в файловой системе. –