# Prüfen ob Datei existiert



## AquaBall (22. Mai 2012)

Mal ne Frage an die Programm-Ästheten:


```
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?


----------



## Gast2 (22. Mai 2012)

```
if (fileExists(root, fileName)) {
  //...
}
```
Die Methode fileExists legst du dann irgendwo als private Methode an.


----------



## AquaBall (22. Mai 2012)

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'.)


----------



## Gast2 (22. Mai 2012)

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.


----------



## Horschie (22. Mai 2012)

legst halt jmden an, der nachsschauen kann ;O)


----------



## Landei (22. Mai 2012)

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...


----------



## Crian (23. Mai 2012)

EikeB hat gesagt.:


> ```
> if (fileExists(root, fileName)) {
> //...
> }
> ...



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.


----------



## age (23. Mai 2012)

Es gibt eigentlich auch keinen Grund, warum dir das new unsympathisch sein sollte.
Für solche Fälle gibts ja deine GarbageCollection


----------



## MiDniGG (23. Mai 2012)

AquaBall hat gesagt.:


> (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 ^^)


----------



## AquaBall (23. Mai 2012)

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.


----------

