Hallo,
ich habe ein Programm geschrieben, dass alle Dateien im Laufwerk C:\ ausgeben soll.
Dies macht er zwar schon, aber bis alle Pfade ausgegeben sind, dauert es eine Weile. Ich habe Threads benutzt, um die Bearbeitung schneller zu machen. Dies funktioniert leider nicht. Was mache ich hier falsch ? Für einen Hinweis würde ich mich freuen
ich habe ein Programm geschrieben, dass alle Dateien im Laufwerk C:\ ausgeben soll.
Dies macht er zwar schon, aber bis alle Pfade ausgegeben sind, dauert es eine Weile. Ich habe Threads benutzt, um die Bearbeitung schneller zu machen. Dies funktioniert leider nicht. Was mache ich hier falsch ? Für einen Hinweis würde ich mich freuen
Code:
package test2;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test2 extends Thread {
public Test2(String name) {
super(name);
}
@Override
public void run() {
int i = 0;
File[] l = File.listRoots();
ArrayList<File> files = getPaths(l[0], new ArrayList<>());
if(files == null) return;
try {
for (File file : files) {
System.out.println(++i + " - " + getName() + ":\t" + file.getCanonicalPath());
}
} catch (IOException e) {
}
}
public static void main(String[] args) {
Test2 t = new Test2("Finder1");
Test2 t2 = new Test2("Finder2");
Test2 t3 = new Test2("Finder3");
Test2 t4 = new Test2("Finder4");
Test2 t5 = new Test2("Finder5");
Test2 t6 = new Test2("Finder6");
Test2 t7 = new Test2("Finder7");
Test2 t8 = new Test2("Finder8");
t.start();
t2.start();
t3.start();
t4.start();
t5.start();
t6.start();
t7.start();
t8.start();
}
private static ArrayList<File> getPaths(File file, ArrayList<File> list) {
if (file == null || list == null || !file.isDirectory())
return null;
File[] fileArr = file.listFiles();
if(fileArr != null) {
for (File f : fileArr) {
if (f.isDirectory() && !f.isHidden()) {
getPaths(f, list);
}
try {
if(file.getCanonicalPath().contains(".")) {
list.add(f);
}
} catch (IOException ex) {
}
}
}
return list;
}
}