У меня есть 2 класса -A и BI строю графический интерфейс для получения списка файлов.Класс B предназначен для рекурсии и возвращает общий список файлов.Класс A предназначен для графического интерфейса и извлекает список файлов и преобразует каждый файл в строку.
Теперь моя проблема заключается в том, что при вызове System.out.println (SomeFileName.toString ());в классе B. Выход быстро мигает!Но когда я получаю тот же список файлов через класс A и добавляю вывод в JTextArea - тогда обработка становится в миллион раз медленнее.
Кто-нибудь может дать мне решение?Должен ли я использовать буферы?или я просматривал, где-то было предложено использовать документ для JTextArea!Я использую NetBeans.
Класс A кодируется так:
List<File> hoohoo = cr.catalog(partition);
Iterator<File> it = hoohoo.iterator();
while (it.hasNext()) {
File myf = it.next();
filesText.append(myf.toString() + NEWLINE);
}
Класс B выглядит следующим образом:
public List<File> catalog(String file) {
List<File> fileList = new LinkedList<File>();
File myfile = new File(file);
File[] fileNme = myfile.listFiles();
for (File name : fileNme) {
if (name.isDirectory()) {
fileList.add(name);
List<File> fist = sub_Catalogue(name);
Iterator<File> it = fist.iterator();
while (it.hasNext()) {
fileList.add(it.next());
}
} else if (name.isFile()) {
fileList.add(name);
}
}
return fileList;
}
private List<File> sub_Catalogue(File name) {
List<File> fileList2 = new LinkedList<File>();
File[] names = name.listFiles();
Humpty:
if (names == null) {
break Humpty;
} else {
HooHaa:
for (File n : names) {
if (n.isFile()) {
fileList2.add(n);
} else if (n.isDirectory()) {
fileList2.add(n);
List<File> fileList3 = sub_Catalogue(n);
Iterator<File> uf = fileList3.iterator();
while (uf.hasNext()) {
fileList2.add(uf.next());
}
}
}
}
return fileList2;
}