Hallo,
ich versuche schon die ganze Zeit in einer for-Schleife Dateien zu verschieben aber es rührt sich nichts. Wenn ich außerhalb der Schleife eine einzelnde Datei verschieben will funktioniert es. Die Parameter neu und alt werden jedenfalls richtig übergeben. Das ist jedenfalls der Code Ausschnitt verstehe überhaupt nicht wo das Problem liegt.
Java:
File dir =newFile(a);String neu,alt;File[] fileList = dir.listFiles();for(int i=0;i<fileList.length;i++){
neu=pfad+name+"/"+fileList[i].getName();
alt=pfad+fileList[i].getName();FileVerschieben(neu,alt);}publicvoidFileVerschieben(String neu,String alt){File quelle =newFile(alt);File ziel =newFile(neu);
quelle.renameTo(ziel);}
Irgendwie sieht das redundant aus - wo ist denn der Zusammenhang zwischen a und pfad? M.E. wäre es auch besser, beim Umbenennen direkt das File-Objekt zu verwenden und nicht aus dem File einen String und danach aus dem String wieder ein File zu erzuegen.
An den Klammern liegt es nicht. Die Variable name ist nur ein String der an den Pfad dran gehängt werden soll und a ist auch ein String.
Murray hat näturlich recht ich kann ja gleich das file Objekt verwenden. Aber was ich nicht verstehen ist wenn ich System.out.println(ziel.exists()); mache kommt immer false raus.
Ich hab das jetzt so gemacht wie du gleich die files zu verwenden, allerdings kann man bei der renameTo Methode keinen String als Parameter übergeben. Also hab ich wieder das File ziel erzeugt und als Parameter angegeben. Es kommt aber immer noch die Exception das succes nicht erfolgreich war.
Sorry, da war natürlich ein Fehler in Zeile 14; eigentlich war es so gedacht:
[JAVA=13] File destFil = new File( destDir + File.separator + srcFil.getName());
boolean success = srcFile.renameTo( destFil);
[/code]
File dir =newFile(a);File[] fileList = dir.listFiles();for(int i=0;i<fileList.length;i++){File destDir =newFile( pfad+name);File quelle = fileList[i];File ziel =newFile(destDir +File.separator + quelle.getName());boolean success = quelle.renameTo(ziel);if(!success)thrownewIOException( quelle.getAbsolutePath()+" konnte nicht in "+ ziel.getAbsolutePath()+" umbenannt werden");}
Das renameTo gibt mir immer false zurück. Welchen Grund kann es denn haben wenn renameTo nicht funktioniert die Quelldatei aber existiert?
- Die Zieldatei könnte bereits existieren und schreibgeschützt sein
- Das Zielverzeichnis könnte nicht existieren
- Das Zielverzeichnis könnte schreibgeschützt sein
Deshalb hatte ich bei mir entsprechende Prüfungen eingebaut.
Wenn das renameTo false liefert, müsste ja die Exception kommen - wie sieht die genau aus?
Es fällt ja nur die Exception die definiert wurde wenn succes gleich false ist.
Spielt das eine Rolle das ich meine Main- Methode in einer anderen Klasse habe, weil wenn ich einfach alles in Main reinhaue verschiebt er auch die Ordner sonst aber nicht.