Überprüfen Sie, ob sich die Datei im (Unter) Verzeichnis befindet

7

Ich möchte überprüfen, ob sich eine vorhandene Datei in einem bestimmten Verzeichnis oder Unterverzeichnis befindet.

Ich habe zwei Dateiobjekte.

%Vor%

Beide sind garantiert zu existieren. Nehmen wir an

%Vor%

Ich möchte, dass diese Prüfung wahr zurückgibt

Für jetzt mache ich die Überprüfung auf diese Weise:

%Vor%

Dies scheint mit meinen begrenzten Tests zu funktionieren, aber ich bin mir 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

    
Johannes Dorn 14.08.2013, 09:15
quelle

7 Antworten

10

Ich würde eine kleine Hilfsmethode erstellen:

%Vor%     
dacwe 14.08.2013 09:31
quelle
7

Zusätzlich zum asnwer von rocketboy verwenden Sie getCanonicalPath() instad von getAbsolutePath() , damit \dir\dir2\..\file in \dir\file :

konvertiert wird %Vor%

oder

%Vor%

Vergessen Sie nicht, Exception mit try {...} catch {...} zu fangen.

HINWEIS: Sie können FileSystem.getSeparator() anstelle von File.separator verwenden. Der 'korrekte' Weg ist, das getCanonicalPath() des Verzeichnisses, das Sie überprüfen wollen, als String zu erhalten, dann zu prüfen, ob es mit einem File.separator endet und wenn nicht, dann fügen Sie File.separator hinzu Das Ende dieses String , um doppelte Schrägstriche zu vermeiden. Auf diese Weise überspringen Sie zukünftige ungerade Verhalten, wenn Java beschließt, Verzeichnisse am Ende mit einem Schrägstrich zurückzugeben, oder wenn Ihre Verzeichniszeichenfolge von woanders als Java.io.File kommt.

NOTE2: Danke an @david, um auf das File.separator -Problem zu zeigen.

    
Jorge Fuentes González 12.04.2014 12:21
quelle
4

Diese Methode sieht ziemlich solide aus:

%Vor%

Quelle

angezeigt wird

Es ist ähnlich der Lösung von dacwe, verwendet aber keine Rekursion (obwohl das in diesem Fall keinen großen Unterschied machen sollte).

    
tsauerwein 30.07.2014 11:56
quelle
0

Wenn Sie vorhaben, mit Dateien und Dateinamen schwer zu arbeiten, prüfen Sie die Bibliotheken apache fileutils und filenetutils. Sind voll von nützlichen (und Portale, wenn Portabilität ist mamdatory) Funktionen

    
Luca Basso Ricci 14.08.2013 09:29
quelle
0
%Vor%

}

    
r3ap3r 14.08.2013 09:29
quelle
0

Sie können den Dateibaum ausgehend von Ihrem spezifischen Verzeichnis durchsuchen. Bei Java 7 gibt es Files.walkFileTree method. Sie müssen nur Ihren eigenen Besucher schreiben um zu prüfen, ob der aktuelle Knoten die gesuchte Datei ist. Weitere Dokumente: Ссылка

    
michal 14.08.2013 09:38
quelle
-1

Wie wäre es, die Pfade zu vergleichen?

%Vor%

oder

%Vor%     
rocketboy 14.08.2013 09:24
quelle

Tags und Links