Prüfen ob Datei existiert

AquaBall

Top Contributor
Mal ne Frage an die Programm-Ästheten:

Java:
String rootDir=...,fileName= ...;
if (   (new File(rootDir,fileName)).exists()  ) {
...
}

Ist so 'ne Formulierung zur Überprüfung einer Existenz
  • Schlau
  • katastrophal
  • gefährlich
  • noch zu optimieren
  • oder sonst was ?

(Ich will da nicht extra eine Variable anlegen, sondern möglichst kompakt/schnell/ergonomisch wissen ob eine gewisse Datei existiert.
Mich macht aber dieses 'new' skeptisch, und gut lesbar ist es auch nicht.)

Wie macht Ihr das? Was haltet ihr für die eleganteste Variante?
 
Java:
if (fileExists(root, fileName)) {
  //...
}
Die Methode fileExists legst du dann irgendwo als private Methode an.
 
Ist natürlich viele eleganter zu lesen.

In der Methode bleibt aber die Kostruktion dieselbe, oder?

(Mich stört ja vor allem dieses 'new': Hab auch keinen sachlichen Grund, ist mir an dieser Stelle nur unsympatisch. Ich will ja nichts anlegen, sondern nur 'nachschauen'.)
 
Ja, in der Methode würdest du das dann genauso mit nem neuen File objekt prüfen.
Du hast aber keine andere Möglichkeit. Um die Methode exists aufrufen zu können brauchst du nen File Objekt.
 
Wenn du von mehreren Dateien in einem bestimmten Verzeichnis wissen willst, ob sie existieren, kannst du dir auch mit [c]new File("meinDir").list()[/c] alle Dateien als String-Array zurückgeben lassen, und überprüfen, ob deine Dateinamen dabei sind. Ob das allerdings viel eleganter ist, sei dahingestellt...
 
Java:
if (fileExists(root, fileName)) {
  //...
}
Die Methode fileExists legst du dann irgendwo als private Methode an.

Genau das hätte ich auch empfohlen. In der neuen Methode kannst du dich dann ruhig etwas gemütlicher ausbreiten, das File-Objekt richtig anlegen und dann den Wahrheitswert zurückgeben, ohne dass dies die Leserlichkeit an der Einsatzstelle stören würde.
 
Es gibt eigentlich auch keinen Grund, warum dir das new unsympathisch sein sollte.
Für solche Fälle gibts ja deine GarbageCollection 😉
 
(Mich stört ja vor allem dieses 'new': Hab auch keinen sachlichen Grund, ist mir an dieser Stelle nur unsympatisch. Ich will ja nichts anlegen, sondern nur 'nachschauen'.)

Da hast Du recht. Das finde ich auch immer sehr verwirrend. Aber es wird ja keine "neue" Datei angelegt sondern nur eine neue Instanz der File-Klasse erstellt. Solang Du kein createFile() oder mkdir/s() machst passiert auch nix. ;-)
(Nur zur Besänftigung ^^)
 
Danke allen für die Anteilnahme. 🙂

Ich hab den Tip von EikeB verwendet.

Nun seh ich das 'new' nicht mehr, also stört's mich auch nicht mehr.
 

Neue Themen


Zurück
Oben