File quelle = new File(backupFolder.getPath() + ordner.get(i) + "//minecraftbukkit//" + ordner.get(i));
DirectoryUtil.copyDir(quelle, ziel);
DirectoryUtil.deleteDir(quelle);```
Was mache ich falsch?
Mache ich gerade braucht aber kurz da ich die Methode alleine nicht ausführen kann melde mich gleich zurück ob es quelle oder files ist
Edit:
:scheiterhaufen::idea:
Ich weis jetzt woran es liegt:
Bin soooo blöd: File quelle = new File(backupFolder.getPath() + "//" + ordner.get(i) + "//minecraftbukkit//" + ordner.get(i));
Habe vergessen diese DUMMEN // noch hinzumachen so war der Pfad nämlich backupetc/ statt backup/etc
Danke für die Hilfe
Afair braucht man diesen nicht escapen, sondern nur den Back-Slash “”. Und diesen escapet man mit einem Backslash.
“\” würde also Sinn machen um einen BackSlasch “” zu erhalten.
Aber “//”?
Soll rekursiv das komplette Ordner kopiert werden - oder nur alle Dateien? Soll auch der Inhalt kopiert werden - oder nur alle Dateien und/oder Ordner erstellt werden?
@Unregistred Der Doppelte Slash wird später durch einen Backslash ersetzt. @CyborgBeta es soll rekursiv der ganze Ordner kopiert werden inklusive Inhalt
Aber es funktioniert ja nun hatte ja geschrieben wieso weshalb warum,kann es aber noch performanter vll. machen
Ich habe dir mal “schnell” den Anfang geschrieben:
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package pkg13kopieerstellen;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
/**
* @author CB
*/
public class Main {
public static File[] fromTo() {
JFileChooser jfc = new JFileChooser();
jfc.setMultiSelectionEnabled(false);
jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
jfc.setFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
return true;
}
@Override
public String getDescription() {
return "JFileChooser.DIRECTORIES_ONLY";
}
});
File from, to;
if (jfc.showOpenDialog(null) != JFileChooser.APPROVE_OPTION || !(from = jfc.getSelectedFile()).isDirectory() || !from.canWrite() || jfc.showSaveDialog(null) != JFileChooser.APPROVE_OPTION || !(to = jfc.getSelectedFile()).isDirectory() || !to.canWrite()) {
return null;
}
return new File[]{from, to};
}
public static void copy(File from, File to) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println(Arrays.toString(fromTo()));
}
}```
jfc erlaubt nur Verzeichnisse,
ist jfc APPROVE_OPTION gewählt, wurde ein Verzeichnis gewählt (getSelectedFile != null),
ist isDirectory ,besteht dieses Verzeichnis,
ist canWrite ,besteht dieses Verzeichnis und kann beschrieben werden.
In copy:
Erstelle Verzeichnis from in to,
lege dir ArrayDeque<File> an,
lege from in adf,
solange adf nicht leer:
Nimm erstes File aus adf,
ist es ein Verzeichnis:
Erstelle Verzeichnis in to,
füge Files aus Verzeichnis adf hinten hinzu,
ist es eine Datei:
Kopiere Datei von from nach to,
gehe zu "solange adf nicht leer".
Soweit alles ok/verständlich?
Ist zwar albern, aber ich muss in meine Signatur schreiben, dass nicht mehr auf 50, 59, 55 und 40 geantwortet werden soll (Uhrzeit), das erinnert mich zu sehr an schlechte Noten.^^
In copy( hätte man auch copy(File… fromTo) schreiben können, um das Array direkt an die Methode/Objekt zu geben. Besser lesbar? Evtl.
Das mit der doppelseitigen Queue/Stack ist so gemeint, dass zB ein Breitendurchlauf oder Tiefendurchlauf (Traversierung [ohne Rekursion]).
es genügt wenn man grundsätzlich “/” nutzt, da “//” wie schon erwähnt keinen sinn macht und “\” nur unter Windows funktioniert.
Nutzt man hingegen einfach nur “/” läuft dies sowohl unter Unix als auch unter Windows da Java intern unter Windows aus einer Pfad-Angabe mit “/” am Ende korrekt mit “” arbeitet.
Aber nur so am Rande im Sinne der Plattformunabhängigkeit die Java einem bietet. Wenn man es schon nutzen will muss man es auch richtig schreiben.
es genügt wenn man grundsätzlich “/” nutzt, da “//” wie schon erwähnt keinen sinn macht und “\” nur unter Windows funktioniert.
Nutzt man hingegen einfach nur “/” läuft dies sowohl unter Unix als auch unter Windows da Java intern unter Windows aus einer Pfad-Angabe mit “/” am Ende korrekt mit “” arbeitet.
Aber nur so am Rande im Sinne der Plattformunabhängigkeit die Java einem bietet. Wenn man es schon nutzen will muss man es auch richtig schreiben.[/QUOTE]