Asides gerçeğinden yolları olmayabilir (ve canonicalisation başarılı olmayabilir), bu makul bir benziyor Basit durumda çalışması gereken yaklaşım.
Bunu her adımda ebeveyn eşleşirse test, bir döngü içinde "belki çocuk" konulu
getParentFile() arayarak bakmak isteyebilirsiniz
. Ebeveyn bir (gerçek) dizin değilse, karşılaştırmayı kısa devre yapabilirsiniz.
Belki şu gibi bir şey: isterseniz çocuk ilişkisi olduğu bu
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;
}
Not sıkı (yani bir dizin kendi başına bir çocuk değildir) Çizginin başlangıç child
atama değiştirebilir 9 child.getParentFile()
olmak için, çocuğun bulunduğu dizinde ilk kontrol gerçekleşir.
mu bu örnek tüm dosya sistemi IO gerektirir? – user2586917
[Java: Yolun bir dosyanın ebeveyni olup olmadığını kontrol edin] (http://stackoverflow.com/questions/28698125/java-check-if-path-is-parent-of-a-file) – Suma
@Suma : Bağlandığınız soru bunun _duplicate_. – Jayan