Files verschieben in einen Ordner

Bitte aktiviere JavaScript!
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Da wo du
Code:
// hier soll dann die Datei aus dem Archiv quasi gelöscht oder mit der Datei aus dem Ordner2"überschrieben werden".
geschrieben hast :)
 
Hier nochmal für deinen gesendeten Code umgeschrieben:
Java:
if(fileinArchiv.exists()) {
    fileinArchiv.delete();
}

FileUtils.moveFileToDirectory(listfilesfolder2[k], folderdestArchiv, true);
 
ok also irgendwas stimmt nicht, schau mal das ist mein ganzer Code:



Code:
for (File fileinFolder1 :listofFilesinF1){
    try{
    FileUtils.moveFileToDirectory(fileinFolder1,folder2,true);
    }
catch(){

}
}

for(int i = 0; i < listofFilesinF1.length(), i++){
    for(int k = 0; k < listofFilesinF2.length(), k++){
    
    if(listofFilesinF1[i].getName().equals(listofFilesinF2[k])){
    
    for(File fileinArchive : listofFileinArchive){
    
    if(fileinArchive.exists()){
    fileinArchive.delete();
    }
    
    FileUtils.moveFileToDirectory(listofFilesinF2[k], folderarchive,true);
    try{
    FileUtils.moveFileToDirectory(listofFilesinF2[k], folderarchive,true);
    }
    
    catch()
    {
    
    }
    
    }
    }
    }



}
So die Sache ist, es sollen auch nicht alle Dateien in dem Archiv gelöscht werden oder ersetzt, nur die um die es sich quasi handelt.

Danke :(
 
Java:
private void moveToFolder(File folder1, File folder2, File archiveFolder) {
        try {
            for (File file : folder1.listFiles()) {
                if (folder2.listFiles().length != 0) {
                    for (File folderTwoFile : folder2.listFiles()) {
                        if (file.getName().equals(folderTwoFile.getName())) {
                            Files.move(folderTwoFile.toPath(), new File(archiveFolder.getAbsolutePath() + "\\" + folderTwoFile.getName()).toPath());
                            Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                        } else {
                            Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                        }
                    }
                } else {
                    Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Was ging denn damals daran nicht? Bei mir ging es eigentlich ganz gut :confused:
Probier es damit nochmal
Einfach nur
Code:
moveToFolder(new File("ordner1"), new File("ordner2"), new File("archiv"));
 
Wenn ich deinen Code ausführe verschiebt er bei mir den Archiv Ordner in den Ordner2 :( ich könnte heulen:(
 
Verschiebt er den ganzen Ordner oder nur die Dateien vom Archiv Ordner?
Und sind das normale Ordner oder irgendwas spezielles? (ZIP oder so)
 
den ganzen Ordner, hab nur unten in der Funktion meine Pfade eingefügt, also an deinem Code nichts geändert.
Und das:

java.nio.file.NoSuchFileException: C:\Users\Lias\Desktop\test\Archiv
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
 
Und kannst du mir mal die Zeile zeigen?
Also wie sieht die Zeile bei dir aus:
Java:
moveToFolder(new File("ordner1"), new File("ordner2"), new File("archiv"));
 
moveToFolder(new File("C:\\Users\\Lias\\Desktop\\test"), new File("C:\\Users\\Lias\\Desktop\\test\\FS"), new File("C:\\Users\\Lias\\Desktop\\test\\Archiv"));
 
achsoooooo
Der Archiv Ordner ist in deinem Ordner 1 drin?
Mach mal den Archiv Ordner kurz aus deinem Test Ordner raus und versuche es nochmal mit dem neuen Pfad
Beim Ordner2 dasselbe
 
Hier nochmal eine verbesserte Version der Methode:

Java:
private void moveToFolder(File folder1, File folder2, File archiveFolder) {
        try {
            for (File file : folder1.listFiles()) {
                if (folder2.listFiles().length != 0) {
                    for (File folderTwoFile : folder2.listFiles()) {
                        if (file.getName().equals(folderTwoFile.getName())) {
                            Files.move(folderTwoFile.toPath(), new File(archiveFolder.getAbsolutePath() + "\\" + folderTwoFile.getName()).toPath());
                            Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                        } else {
                            Files.copy(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                        }
                    }
                } else {
                    Files.copy(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Und teste es mal mit
Java:
moveToFolder(new File("C:\\Users\\Lias\\Desktop\\test"), new File("C:\\Users\\Lias\\Desktop\\test2"), new File("C:\\Users\\Lias\\Desktop\\Archiv"));
Musst natürlich die Ordner dann auch kurz so verschieben
 
Also ich peil gerade gar nix mehr xD , man das tut mir sooo leid :(
wenn ich das so ausführe kopiert er mir jetzt alles inkl Ordner (die gleiche Struktur) in den Ordner2?????
Genau in Ordner1 sind der ARCHIV Ordner und der Ordner2
 
Es ist gerade wirklich etwas verwirrend, ist aber nicht deine Schuld, da gerade Missverständnisse aufgetreten sind xD
Also die Methode verschiebt quasi alle Dateien in Ordner1 in Ordner2 und wenn diese Datei schon in Ordner2 existiert, überschreibt er sie, nachdem er sie ins Archiv schickt.
Und die Ordner, die du in deinem Test Ordner hast sind eben auch Dateien. Aber das lässt sich denke ich mal beheben.
Ich schicke dir in einer Minute eine neue Version, die das beheben müsste
 
wenn ich zb @mihe7 sein Code ausführe, funktioniert er soweit wie meiner, aber sobald ich in allen drei Ordnern die selbe Datei habe und quasi versuche wieder die aktuelle testdatei in den Ordner2 zu verschieben kommt die meldung" File Already exist"
Aber doch nicht, wenn Du StandardCopyOption.REPLACE_EXISTING verwendest, oder?
 
Java:
private void moveToFolder(File folder1, File folder2, File archiveFolder) {
        try {
            for (File file : folder1.listFiles()) {
                if (!file.isDirectory()) {
                    if (folder2.listFiles().length != 0) {
                        for (File folderTwoFile : folder2.listFiles()) {
                            if (!folderTwoFile.isDirectory()) {
                                if (file.getName().equals(folderTwoFile.getName())) {
                                    Files.move(folderTwoFile.toPath(), new File(archiveFolder.getAbsolutePath() + "\\" + folderTwoFile.getName()).toPath());
                                    Files.copy(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                                } else {
                                    Files.copy(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                                }
                            }
                        }
                    } else {
                        Files.copy(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath());
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
Jetzt kannst du es wie vorher ausprobieren mit
Java:
moveToFolder(new File("C:\\Users\\Lias\\Desktop\\test"), new File("C:\\Users\\Lias\\Desktop\\test\\FS"), new File("C:\\Users\\Lias\\Desktop\\test\\Archiv"));
 
genau das funktioniert soweit wobei dir dateien auch nicht im Ordner1 bleiben sollten :( , und wenn ich dann eine test1.txt wieder versuche von ordner1 aus zu verschieben, bekomme ich die fehlermeldung already exist exception..
Das stimmt ja auch, die Datei befindet sich ja auch in allen drei Ordnern aber das Archiv soll ja wieder eine neue version bekomme aus Ordner2..

Bist vermutlich genervt von mir xD :(
 
Ich bin nicht so schnell von Menschen genervt, vor allem nicht, wenn sie ein Problem haben und Hilfe brauchen :)
Ich helfe dir gerne, da ich gerade eh nichts zu tun habe xD
Also willst du, dass die Datei, die von Ordner1 in Ordner2 verschoben wird, dann auch entfernt wird?
Kannst du mir mal die genaue Fehlermeldung senden? Oder steht da wirklich nur "File already exists"?
 
Wie lieb vielen Dank :)
genau von Ordner1 in Ordner2 (aber wird von Ordner1 aus quasi verschoben in Ordner2) und dann von Ordner2 das was vorher in Ordner2 drin war in den Archiv Ordner
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben