Hey Leute.
Ich bin gerade dabei ein Programm zu schreiben, welches von einer Festplatte auf Ordnern einen bestimmten Ordner kopiert.
Es funktioniert ziemlich gut, jedoch nur wenn in jedem Ordner auch der gesucht Ordner vorhanden ist. Sobald das Programm einen Ordner prüf, in dem dies nicht der Fall ist, spinnt es komplett rum und kopiert falsche Inhalte etc. Der Code ist ziemlich kompliziert geschrieben und wenn jemand möglichkeiten findet den Code zu kürzen bitte auch schreiben.
Hier der Code:
Erklärung im Detail:
Das Programm sollte zuerst in den Ordner Auftäge gehen. In diesem Ordner Befinden sich von A-Z Ordner mit dem Namen der Kunden. Danach geht es nach der Reihe in den Ordner der Kunden rein. Dort befinden sich dann wieder Ordner. Und danach sucht er alle Ordner durch bist er den Ordner "Planen" gefunden hat. Und den kopiert er dann in den Ordner "Erledigt" mit dem Namen des jeweiligen Kunden davor. Wie gesagt, es funktioniert, solange jeder Kundenordner "Planen" beinhaltet.
Was mache ich falsch?
PS: Ich weiß das ich gerade 100 mal Ordner geschrieben habe, hatte nur keine Lust mir da immer was einfallen zu lassen.
Ich bin gerade dabei ein Programm zu schreiben, welches von einer Festplatte auf Ordnern einen bestimmten Ordner kopiert.
Es funktioniert ziemlich gut, jedoch nur wenn in jedem Ordner auch der gesucht Ordner vorhanden ist. Sobald das Programm einen Ordner prüf, in dem dies nicht der Fall ist, spinnt es komplett rum und kopiert falsche Inhalte etc. Der Code ist ziemlich kompliziert geschrieben und wenn jemand möglichkeiten findet den Code zu kürzen bitte auch schreiben.
Hier der Code:
Java:
package defaultP;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
public class Kopieren {
static File le = new File("C:\\Aufträge");
static File[] Filees = le.listFiles();
static int max = Filees.length;
public static int or = 0;
public static void main(String[] args) throws FileNotFoundException, IOException {
File ziel = new File("C:\\Erledigt");
searchFile(le,"Planen");
}
public static File zielOrdner(File dir, int or) {
File[] filesZ = dir.listFiles();
return filesZ[or];
}
public static void searchFile(File dir, String find) {
File[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].getName().equalsIgnoreCase(find)) {
File f = new File(files[i].getAbsolutePath());
try {
File ziel = new File("C:\\Erledigt"+zielOrdner(le,or).getName());
System.out.println(zielOrdner(le,or).getName());
if(or<max) {
or++;
}
copyDir(f,ziel);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
else if (files[i].isDirectory()) {
searchFile(files[i], find);
}
}
}
public static void copyDir(File quelle, File ziel) throws FileNotFoundException, IOException {
File[] files = quelle.listFiles();
File newFile = null;
ziel.mkdirs();
for (int i = 0; i < files.length; i++) {
newFile = new File(ziel.getAbsolutePath() + System.getProperty("file.separator") + files[i].getName());
if (files[i].isDirectory()) {
copyDir(files[i], newFile);
}
else {
copyFile(files[i], newFile);
}
}
}
public static void copyFile(File file, File ziel) throws FileNotFoundException, IOException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(ziel, true));
int bytes = 0;
while ((bytes = in.read()) != -1) {
out.write(bytes);
}
in.close();
out.close();
}
}
Erklärung im Detail:
Das Programm sollte zuerst in den Ordner Auftäge gehen. In diesem Ordner Befinden sich von A-Z Ordner mit dem Namen der Kunden. Danach geht es nach der Reihe in den Ordner der Kunden rein. Dort befinden sich dann wieder Ordner. Und danach sucht er alle Ordner durch bist er den Ordner "Planen" gefunden hat. Und den kopiert er dann in den Ordner "Erledigt" mit dem Namen des jeweiligen Kunden davor. Wie gesagt, es funktioniert, solange jeder Kundenordner "Planen" beinhaltet.
Was mache ich falsch?
PS: Ich weiß das ich gerade 100 mal Ordner geschrieben habe, hatte nur keine Lust mir da immer was einfallen zu lassen.