# Ordner umbenennen mit renameTo - mysteriöses Problem



## S.T.O.R.M. (30. Mrz 2010)

Hallo,
ich habe ein Programm geschrieben, dass vier Ordner umbenennen soll. Ordner A soll B heißen und Ordner B soll A heißen. Und das gleiche nochmal: Ordner C soll D heißen und D soll C heißen.
Ich habe immer das Problem, dass der Ordner Data_mod nicht in Data_org umbenannt wird. Auf manchen PC's geht es, auf anderen wiederum nicht. Manchmal geht das Programm auch nur in bestimmten Ordnern. Ich verstehe das nicht... Hat jemand eine Idee?

Hier der code dazu:


```
public void rename()  {
        File f1 = new File("Data");
        File f2 = new File("Data_mod");
        File f3 = new File("Inst");
        File f4 = new File("Inst_mod");

        f1.renameTo(new File("Data_org"));
        f2.renameTo(new File("Data"));
        f3.renameTo(new File("Inst_org"));
        f4.renameTo(new File("Inst"));

    }
```

EDIT:
Ah... habe es gerde herausgefunden. Es waren Dateien auf den zu ändernden Ordner geöffnet. Kann man da evtl. mit einer Exception eine Warnung abgeben, wenn eine dieser Dateien geöffnet ist?


----------



## Suinos (30. Mrz 2010)

File#renameTo(File) hat einen Rückgabewert:


			
				Java API hat gesagt.:
			
		

> The return value should always be checked to make sure that the rename operation was successful.


---



			
				S.T.O.R.M. hat gesagt.:
			
		

> [JAVA=7]
> f1.renameTo(new File("Data_org"));
> [/code]


Warum legst du hier neue Objekte an, anstelle die alten zu verwenden?

```
f1.renameTo(f2);
```


----------



## S.T.O.R.M. (30. Mrz 2010)

Dann würde ich doch Data in Data_mod anstatt in Data_org umbenennen, oder?


----------



## Suinos (30. Mrz 2010)

Ah, stimmt, da hab ich wohl deinen Code-Ausschnitt nur überflogen.

Dann passt deine Aufgabenstellung aber nicht genau überein mit dem, was du dort machst:


			
				S.T.O.R.M. hat gesagt.:
			
		

> Ordner A soll B heißen und Ordner B soll A heißen. Und das gleiche nochmal: Ordner C soll D heißen und D soll C heißen.


----------



## S.T.O.R.M. (30. Mrz 2010)

Ja, das ist richtig. Ok, soweit funktioniert auch alles. Wie kann ich das am geschicktesten überprüfen, ob Dateien in den Ordnern (Referenzvariablen f1 bis f4) nicht gerade geöffnet sind bzw. verwendet werden? Ich würde jetzt spontan nach dem umbenennen noch einmal  prüfen, ob die neuen Ordner existieren und dann müsste ich die anderen Ordner, die schon evtl. umbenannt worden sind, wieder den ursprünglichen Namen zufügen. Wenn, dann sollen alle Ordner umbenannt werden, sonst keiner.


----------



## faetzminator (30. Mrz 2010)

...hat dir Suinos bereits in seinem ersten Post beantwortet.


----------



## S.T.O.R.M. (30. Mrz 2010)

Sorry, habe ich überlesen. Danke euch!


----------



## S.T.O.R.M. (30. Mrz 2010)

Muss doch noch mal nachfragen, was hierfür die beste Lösung wäre. Mein Versuch hatte leider nicht geklappt. Also, wenn ein Ordner nicht umbenannt werden konnte, soll kein Ordner umbenannt werden.


----------



## Tharsonius (30. Mrz 2010)

S.T.O.R.M. hat gesagt.:


> Muss doch noch mal nachfragen, was hierfür die beste Lösung wäre. Mein Versuch hatte leider nicht geklappt. Also, wenn ein Ordner nicht umbenannt werden konnte, soll kein Ordner umbenannt werden.



Wenn bei 4 Umbenennungen die 4. schief geht, dann weisst Du das erst, wenn Du die 4. durchführst und das eben nicht geht. Das heisst die restlichen 3 sind bereits umbenannt. Du musst dann natürlich die Umbenennungen rückgängig machen und Deine Ordner wieder in den ursprünglichen Zustand versetzen. Dies muss aber in umgekehrter Reihenfolge passieren. Also erst 3., dann 2. und dann die erste zurück drehen.

Wenn Du das in Deinem beispiel nicht so machen würdest, dann geht das zurückbenennen beim 1. schon schief, weil der 2. jetzt so heisst wie der 1. ursprünglich hieß.


----------



## S.T.O.R.M. (31. Mrz 2010)

Habs hinbekommen. Danke!


----------

