Wydzielone z faktu nie mogą istnieć ścieżki (i canonicalisation może nie uda), to wygląda na to rozsądny podejście, które powinno działać w prostym przypadku.
Być może zechcesz sprawdzić wywołanie getParentFile() na "może dziecko" w pętli, sprawdzając, czy pasuje do rodzica w każdym kroku. Możesz także zwierać porównanie, jeśli rodzic nie jest katalogiem (rzeczywistym).
Może coś następującego:
boolean myCheck(File maybeChild, File possibleParent) throws IOException
{
final File parent = possibleParent.getCanonicalFile();
if (!parent.exists() || !parent.isDirectory()) {
// this cannot possibly be the parent
return false;
}
File child = maybeChild.getCanonicalFile();
while (child != null) {
if (child.equals(parent)) {
return true;
}
child = child.getParentFile();
}
// No match found, and we've hit the root directory
return false;
}
pamiętać, że jeśli chcesz relacja dziecka do ścisłe (czyli katalog nie jest dzieckiem siebie) można zmienić początkowe child
przypisanie on line 9 to child.getParentFile()
, więc pierwsze sprawdzenie odbywa się w katalogu zawierającym dziecko.
Czy ten przykład wymagać systemu plików IO w ogóle? – user2586917
Prawdopodobny duplikat [Java: Sprawdź, czy ścieżka jest nadrzędną dla pliku] (http://stackoverflow.com/questions/28698125/java-check-if-path-is-parent-of-a-file) – Suma
@Suma : Pytanie, które łączysz, to _duplikat_ tego. – Jayan