Hallihallo,
sitze an einem kleinen Funprojekt, in dem es im Grunde nur darum geht Dateien von A nach B zu kopieren. Nach jedem Kopiervorgang soll auf der GUI Bild a mit Bild b ausgetauscht werden, bzw. umgekehrt. Im Grunde hat das auch alles wunderbar geklappt, nur dass die Bilder immer erst nach der Kopierschleife ausgetauscht wurden und nicht nach jeder einzelnen Datei. Nachdem ich die Bildermethode manuell per Button unter Auslassung der Kopiermethode getestet hatte und diese funktioniert hatte, habe ich ein bisschen recherchiert und festgestellt, dass ich die Kopiermethode wohl über Threads laufen lassen und vor der Aktualisierung der Gui pausieren muss. Soweit so gut. Im Grunde läuft auch das ansatzweise, aber ich habe dabei zwei Probleme:
- ich übergebe den endgültigen Path über die Indexzahl eines String Arrays, die über die Schleife durchiteriert wird:
Aber auch wenn ich schon mehrere Sachen durchprobiert habe, wie
-stringArray über den Thread Kostruktor zu übergeben.
- ne Methode zu schreiben die stringArray in der Thread Klasse setzt
- PATH erst in der Test Klasse zu initialisieren
habe ich immer das Problem, dass der Path genau für die erste Indexzahl richtig gesetzt wird, aber in allen folgenden nicht. Über System.out.println habe ich aber geschaut ob stringArray für sich alleine sich ändert, das ist der Fall. Das Seltsame ist, dass das kein Problem war, als ich den Kopiervorgang noch ohne Thread direkt in der Hauptklasse hatte.
Werde in Kürze den Code hineineditieren, aber vielleicht ist es ja so offensichtlich, dass ich den Wald vor lauter Bäumen ncht mehr sehe und schon jemand eine Idee hat.
Für alle Antworten und Anregungen schon mal vielen Dank
edit: hier der Code, da ich da jetzt viel rumgeschnipselt habe ist der leider etwas chaotisch geworden:
sitze an einem kleinen Funprojekt, in dem es im Grunde nur darum geht Dateien von A nach B zu kopieren. Nach jedem Kopiervorgang soll auf der GUI Bild a mit Bild b ausgetauscht werden, bzw. umgekehrt. Im Grunde hat das auch alles wunderbar geklappt, nur dass die Bilder immer erst nach der Kopierschleife ausgetauscht wurden und nicht nach jeder einzelnen Datei. Nachdem ich die Bildermethode manuell per Button unter Auslassung der Kopiermethode getestet hatte und diese funktioniert hatte, habe ich ein bisschen recherchiert und festgestellt, dass ich die Kopiermethode wohl über Threads laufen lassen und vor der Aktualisierung der Gui pausieren muss. Soweit so gut. Im Grunde läuft auch das ansatzweise, aber ich habe dabei zwei Probleme:
- ich übergebe den endgültigen Path über die Indexzahl eines String Arrays, die über die Schleife durchiteriert wird:
Java:
Path FROM = Paths.get("C:\\Users\\Progra\\Desktop\\test3\\" +stringArray[i]);
Path TO = Paths.get("C:\\Users\\Progra\\Desktop\\test4\\" + stringArray[i]);
Aber auch wenn ich schon mehrere Sachen durchprobiert habe, wie
-stringArray über den Thread Kostruktor zu übergeben.
- ne Methode zu schreiben die stringArray in der Thread Klasse setzt
- PATH erst in der Test Klasse zu initialisieren
habe ich immer das Problem, dass der Path genau für die erste Indexzahl richtig gesetzt wird, aber in allen folgenden nicht. Über System.out.println habe ich aber geschaut ob stringArray für sich alleine sich ändert, das ist der Fall. Das Seltsame ist, dass das kein Problem war, als ich den Kopiervorgang noch ohne Thread direkt in der Hauptklasse hatte.
Werde in Kürze den Code hineineditieren, aber vielleicht ist es ja so offensichtlich, dass ich den Wald vor lauter Bäumen ncht mehr sehe und schon jemand eine Idee hat.
Für alle Antworten und Anregungen schon mal vielen Dank
edit: hier der Code, da ich da jetzt viel rumgeschnipselt habe ist der leider etwas chaotisch geworden:
Java:
import java.nio.file.*;
import java.io.*;
import java.lang.Object.*;
import java.io.IOException;
import java.lang.Thread;
public class RataCopy extends Thread{
int i;
String a;
String b;
public void setpaths(String in){
String fin=in;
Path FROM = Paths.get("C:\\Users\\Progra\\Desktop\\test3\\" +fin);
Path TO = Paths.get("C:\\Users\\Progra\\Desktop\\test4\\" + fin);
}
public void seti(int a){
i= a;
}
RataCopy(){};
public long retarle(){
return fileArray.length;
}
File f = new File("C:\\Users\\Progra\\Desktop\\test3");
File fileArray[] = f.listFiles();
String stringArray[] = f.list();
CopyOption[] options = new CopyOption[]{
StandardCopyOption.REPLACE_EXISTING,
StandardCopyOption.COPY_ATTRIBUTES
};
Path FROM = Paths.get("C:\\Users\\Progra\\Desktop\\test3\\" +stringArray[i]);
Path TO = Paths.get("C:\\Users\\Progra\\Desktop\\test4\\" + stringArray[i]);
public void kopi(){ try{
Files.copy(FROM, TO, options);
System.out.println("kopi" + stringArray[i]);
// sleep(1000);
}catch(IOException w){System.out.println("Le IOException");
// }catch( InterruptedException rwq){System.out.println("bla");
}}
public void run(){
try{
Files.copy(FROM, TO, options);
// sleep(1000);
}catch(IOException w){System.out.println("Le IOException");
}
}
}
public class RataTester{
public static void main(String [] args){
int i=0;
RataCopy ratatestar =new RataCopy();
long f= (int) ratatestar.retarle();
int h = (int)f;
System.out.println("RT8 Array Groesse: "+f);
RataCopy [] ratatesta =new RataCopy[h];
for(i=1; i<f; i++){
System.out.println("RT 13 i: "+i);
ratatesta[i]= new RataCopy("C:\\Users\\Progra\\Desktop\\test3\\" +ratatestar.stringArray[i], "C:\\Users\\Progra\\Desktop\\test4\\" +ratatestar.stringArray[i]);
ratatesta[i].seti(i);
ratatestar.seti(i);
ratatesta[i].setpaths("C:\\Users\\Progra\\Desktop\\test3\\"+ ratatestar.stringArray[i]);
ratatesta[i].start();
ratatesta[i].sleep(200);
System.out.println("RT 21" +ratatestar.stringArray[i]);
System.out.println(ratatesta[i].FROM);
System.out.println(ratatestar.FROM);
}
}
}
Zuletzt bearbeitet: