apartes del hecho de que no pueden existir los caminos (y el canonicalisation puede no tener éxito), esto parece una razonable enfoque que debería funcionar en el caso simple.
Es posible que desee ver llamando al getParentFile() en el "quizás hijo" en un bucle, probando si coincide con el padre en cada paso. También puede cortocircuitar la comparación si el padre no es un directorio (real).
Tal vez algo como lo siguiente:
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;
}
Tenga en cuenta que si desea que la relación niño sea estricta (es decir, un directorio no es un hijo de la misma) se puede cambiar el child
asignación inicial en la línea 9 para ser child.getParentFile()
por lo que el primer control se realiza en el directorio que contiene el niño.
¿Esto requerirá ejemplo de sistema de archivos IO en absoluto? – user2586917
Posible duplicado de [Java: compruebe si la ruta es principal de un archivo] (http://stackoverflow.com/questions/28698125/java-check-if-path-is-parent-of-a-file) – Suma
@Suma : La pregunta que enlazó es _duplicate_ de esto. – Jayan