[Java] Datei erstellt, wenn sie bereits existiert dann umbennen

01/16/2014 15:36 Chicken17#1
Hey Leute,

also ich habe folgenden Code

PHP Code:
int zahl 1;
File imageFile = new File("screenshot" zahl ".png");
ImageIO.write(bufferedImage"png"imageFile); 

Ich will nun aber, dass falls eine Datei mit dem Namen schon existiert, der Zahlenwert um 1 steigt und dann wieder geprüft wird ob eine Datei mit so einem Namen bereits existiert. Wenn keine Datei mit diesem Namen existiert, soll die Datei mit diesem Namen erstellt werden.

Wie verwirkliche ich das? Ich weiß, dass ich
PHP Code:
 if(imageFile.exists()) {
            } 
benötige, aber nicht wie ich das ganze umsetzte. Habe schon alles mögliche mit Schleifen usw. funktioniert aber bekomme es irgendwie nicht hin.

Kann ich die zahl als Integer im Dateinamen eintragen oder muss sie zu erst in einen String umgewandelt werden?


Wäre sehr nett, wenn mir jemand helfen könnte :)
01/16/2014 15:54 dowhile#2
Du kannst Zahlen in Strings einbinden, das tust du in deinem Code auch:
Code:
new File("screenshot" + zahl + ".png");
Du bindest hier die Variable zahl in den String ein.

Wenn du jetzt eine Schleife machst die von 0..X zählt, anstelle von "zahl" die Zählervariable in den String einbindest und abbrichst, wenn die Datei nicht existiert, hast du es doch schon:
Code:
int i = 0; File f; 
do { 
f = new File("screenshot" + i + ".png"); 
i++; 
} while (f.exists());
Du beginnst bei i = 0. Der Rumpf wird zum ersten Mal ausgeführt und das File-Objekt für die Datei "screenshot0.png" wird erstellt. Existiert die Datei, wird der Rumpf nochmal ausgeführt, jetzt für "screenshot1.png" [...]
Wenn f.exists() irgendwann false ist, ist die Schleife beendet und f ist ein File-Objekt für eine Datei die noch nicht existiert.
01/16/2014 16:22 Chicken17#3
Quote:
Originally Posted by dowhile View Post
Du kannst Zahlen in Strings einbinden, das tust du in deinem Code auch:
Code:
new File("screenshot" + zahl + ".png");
Du bindest hier die Variable zahl in den String ein.
Dass ich das bei dem Code gemacht hab wusste ich, ich war mir bloß nicht sicher, ob das mit für mein nicht-gelingen verantwortlich war :D

Quote:
Wenn du jetzt eine Schleife machst die von 0..X zählt, anstelle von "zahl" die Zählervariable in den String einbindest und abbrichst, wenn die Datei nicht existiert, hast du es doch schon:
Code:
int i = 0; File f; 
do { 
f = new File("screenshot" + i + ".png"); 
i++; 
} while (f.exists());
Du beginnst bei i = 0. Der Rumpf wird zum ersten Mal ausgeführt und das File-Objekt für die Datei "screenshot0.png" wird erstellt. Existiert die Datei, wird der Rumpf nochmal ausgeführt, jetzt für "screenshot1.png" [...]
Wenn f.exists() irgendwann false ist, ist die Schleife beendet und f ist ein File-Objekt für eine Datei die noch nicht existiert.
Vielen Dank für die schnelle Hilfe! :handsdown: Ich hab alles mögliche mit if else in Schleifen versucht aber bin nicht darauf gekommen, dass ich "f.exists();" als Bedingung verwenden kann.

Gemeldet zum schließen. Gibt es einen Sammelthread wo ich kleinere Fragen wie diese stellen kann, damit ich nicht jedes Mal einen Thread erstellen muss? :)