Ich möchte prüfen, ob sich eine vorhandene Datei in einem bestimmten Verzeichnis oder einem Unterverzeichnis davon befindet.Überprüfen Sie, ob sich die Datei im (Unter) Verzeichnis befindet
Ich habe zwei Dateiobjekte.
File dir;
File file;
Beide sind garantiert zu existieren. Lassen Sie sich
dir = /tmp/dir
file = /tmp/dir/subdir1/subdir2/file.txt
annehmen mag ich diese Prüfung
Vorerst true zurück ich den Scheck auf diese Weise tue:
String canonicalDir = dir.getCanonicalPath() + File.separator;
boolean subdir = file.getCanonicalPath().startsWith(canonicalDir);
Dies scheint mit meinen begrenzten Tests zu arbeiten, aber ich bin nicht sicher, ob dies auf einigen Betriebssystemen Probleme verursachen könnte. Ich mag auch nicht, dass getCanonicalPath() eine IOException auslösen kann, die ich behandeln muss.
Gibt es einen besseren Weg? Möglicherweise in einer Bibliothek?
Danke
Dies könnte problematisch für Pfade sein, die Zeug wie "/tmp/something/../dir" enthalten, was in meiner Anwendung möglich ist. –
Sie können einfach 'child.getAbsolutePath(). StartsWith (parent.getAbsolutePath())' verwenden, wenn dies der Fall ist. – rocketboy
Eigentlich berechnet getAbsolutePath() alle solche '/../' Tokens und gibt den absoluten Pfad im Dateisystem zurück. –