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();
}
}
moveToFolder(new File("C:\\Users\\Lias\\Desktop\\test"), new File("C:\\Users\\Lias\\Desktop\\test2"), new File("C:\\Users\\Lias\\Desktop\\Archiv"));
Aber doch nicht, wenn Du StandardCopyOption.REPLACE_EXISTING verwendest, oder?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"
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();
}
}
moveToFolder(new File("C:\\Users\\Lias\\Desktop\\test"), new File("C:\\Users\\Lias\\Desktop\\test\\FS"), new File("C:\\Users\\Lias\\Desktop\\test\\Archiv"));
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(), StandardCopyOption.REPLACE_EXISTING);
Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
} else {
Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
}
} else {
Files.move(file.toPath(), new File(folder2.getAbsolutePath() + "\\" + file.getName()).toPath(), StandardCopyOption.REPLACE_EXISTING);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
StandardCopyOption.REPLACE_EXISTING
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.io.File;
import java.io.IOException;
public class Test {
public static void moveAll(File sourceFolder, File destFolder, File archiveFolder) throws IOException {
Path source = sourceFolder.toPath();
Path dest = destFolder.toPath();
Path archive = archiveFolder.toPath();
assertDirectory(source);
assertDirectory(dest);
assertDirectory(archive);
for (File sourceFile : sourceFolder.listFiles()) {
move(sourceFile.toPath(), dest, archive);
}
}
private static void move(Path sourceFile, Path destFolder, Path archiveFolder) throws IOException {
if (!Files.isRegularFile(sourceFile)) {
return;
}
Path destPath = destFolder.resolve(sourceFile.getFileName());
if (Files.exists(destPath)) {
Files.move(destPath, archiveFolder.resolve(sourceFile.getFileName()), StandardCopyOption.REPLACE_EXISTING);
}
Files.move(sourceFile, destPath);
}
private static void assertDirectory(Path path) {
if (!Files.isDirectory(path)) {
throw new IllegalArgumentException("Not a directory: " + path);
}
}
public static void main(String[] args) throws Exception {
moveAll(new File("folder1"), new File("folder2"), new File("folder2/archive"));
}
}
Hast Du den zuletzt gepostesten Code probiert und nur in main die Ordner entsprechend angepasst?wenn ich deinen @mihe7 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"
Du hast es mit einer .txt Datei probiert aber bekommst den Fehler von einer xlsx? Das ist äußerst komisch.wenn ich es aus dem Ordner1 zb mit einer test2.txt probiere, löscht sie sich aus dem Ordner2 und ich bekomme die exception java.nio.file.NoSuchFileException: C:\Users\Lias\Desktop\test\test2.xlsx
private static void assertDirectory(Path path) { if (!Files.isDirectory(path)) { throw new IllegalArgumentException("Not a directory: " + path); } }
Ist von der Tiefe her nicht so schönVersuchs mal damit
mihe's und meins funktionierte aber Seiten zuvor auch schon...OK ICH FRESS N BESEN, es Funktioniert
Kannst du mir erklären, was daran nicht so gut ist? Nehme gerne Kritik anIst von der Tiefe her nicht so schön
OK ICH FRESS N BESEN, es Funktioniert!!!!!!!
Ja, das was ich in Kommentar #22 geschrieben habe: REPLACE_EXISTING hinzugefügt, damit die vorhandene Datei überschrieben wird.@mihe7 hatttest du was am Code geändert??? also vom letzten Post ??
Was heißt brauchen? Du kannst es weglassen und es wird trotzdem funktionieren. Mit den assert-Teilen wird nur sichergestellt, dass die Voraussetzungen gegeben sind.im Grunde genommen braucht man es aber nicht oder ?
methodeDieSicherstelltDasDerAngegebenePfadAuchWirklichEinVerzeichnisIst
nennen können, das war mir dann aber doch zu lang Kann ich,Kannst du mir erklären, was daran nicht so gut ist? Nehme gerne Kritik an![]()
Kannst du mir mehr erklären, wieso das so ist?2. es käme durch kein professionelles Review,
Das stimmt ^^ Ich bin ja auch erst 15 und hatte das noch nie in der Schule3. man merkt daran, dass Du noch Anfänger bist.
Das wusste ich tatsächlich noch nichtLängere als 20 Zeilen-Methoden werden dagegen heute nicht mehr so genau gesehen und gelten als obsolet.
Mal ein paar Punkte:Kannst du mir mehr erklären, wieso das so ist?
Files.move(file.toPath(), ...)
taucht dreimal auf)