私は2つのクラス-AとBを持っています。ファイルのリストを取得するためのGUIを構築しています。クラスBは再帰のためのもので、ファイルの一般的なリストを返します。クラスAはGUI用で、ファイルのリストを取得し、各ファイルを文字列に変換します。取得した巨大なStringデータを取得し、スイングでJTextAreaに設定する方法は?
私の問題は、私が System.out.println(SomeFileName.toString())を呼び出したときです。クラスBでの出力は速くブレイキング中です! しかし、クラスAを介して同じファイルリストを取得し、出力をJTextAreaに追加すると、 処理が100万回遅くなります。
誰でも私に解決策を教えていただけますか?私はバッファを使うべきですか?私は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;
}
私は自分のシステムに多数のパーティションを持っており、それらすべてのために返されるデータはすばやく処理されます。 Windows 7がインストールされているC:\ドライブとその他のさまざまなプログラム.. –
とJTextAreaにリスナーを追加する必要がありますか? –
コードを投稿してください。魔法のように何が間違っているのかわかりません。 –