2016-09-02 1 views
0

Рассмотрим два данных пути к файлу в виде строк:Сравните отношение двух путей к файлам

/path/to/dir и /path/to/dir/file

В Java, как может один тест, если позже путь к файлу будет представлять собой реальный файл на диске, который ниже или равен директории, представленной первой строкой. Вот еще несколько примеров, чтобы прояснить этот момент, в том числе некоторых возвращаемых значений выборки из функции проверки, которая допрошенных здесь:

/path/to/dir /path/to/dir   (true)  
/path/to/dir /path/to/dir/file  (true) 
/path/to/dir /path     (false) 
/path/to/dir /path/to/dir/../../file (false) 
/path/to/dir file     (false) 
/path/to/dir /path/to/dir/dir2/../ (true) 

бы один избавиться от точек на File методом .getCanonicalPath, а затем проверить на уровне строки ? Может быть, есть лучший способ. Я не мог узнать, что делает File.compareTo.

+0

'избавиться от точек с помощью метода File .getCanonicalPath, а затем проверить на струнный level' ... Похоже, у вас есть Идея, как ответить на собственный вопрос. Я предлагаю реализовать его, чтобы увидеть, работает ли он. Вы всегда можете узнать о своем коде, если у вас есть проблемы. – Linus

ответ

0

Если у вас есть канонический путь, вы можете сделать это:

String path1 = "/path/to/dir" 
String path2 = "/path/to/dir/file" 

path2.beginsWith(path1); 

Этот результат этого будет ваш ответ

1

Пожалуйста, используйте собственные операции путь. Строковые операции могут привести к ошибкам из-за неправильное обращение с разделителями пути и т.д.

Path path1 = Paths.get("/home").normalize(); 
Path path2 = Paths.get("/home/user/filename").normalize(); 

path2.startsWith(path1);