Tach, arbeite an einem prog, dass in einen komplexen ordnersystem nach bestimmten files suchen soll, und nun krige ich gleich mehrere fehler, die ich in dem zusammenhang nicht verstehe, hier der Queltext:
da teilweise viele daten drin sind, und es ewig daurn würde, mit einem thread alles zu durchsuchen, wird für jeden großen überordner (sind etwa 30 - 40) ein thread erstellt, der suchen soll.
so sieht der fehler für jeden thread aus, der erstellt wird:
Java:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.StringTokenizer;
import javax.swing.*;
public class TestSuFu extends JFrame{
String[] rootDirectories;
JTextField LB = new JTextField(4);
JTextArea tabel = new JTextArea();
JTextField searcher = new JTextField(20);
String[] suwords;
File driveC;
TestSuFu(){
super();
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("Wuala SuFu");
this.setResizable(false);
JPanel setings = new JPanel();
JPanel tabelle = new JPanel();
JButton setter = new JButton("Set");
JButton search = new JButton("Suchen");
search.addActionListener(new SearchEvent());
JLabel such = new JLabel("Suchbegriff:");
JScrollPane scrolls = new JScrollPane(tabel);
setter.addActionListener(new SetEvent());
setings.setSize(380, 50);
setings.add(new JLabel("Wuala Laufwerksbuchstabe:"));
setings.add(LB);
setings.add(setter);
tabelle.add(such);
tabelle.add(searcher);
tabelle.add(search);
tabelle.add(scrolls);
this.add(setings);
this.add(tabelle);
this.pack();
this.setSize(400, 300);
searcher.setSize(300, 45);
LB.setSize(100, 45);
tabelle.setSize(350, 200);
tabel.setPreferredSize(new Dimension(200, 150));
scrolls.setSize(390, 200);
this.setVisible(true);
}
class SearchEvent implements ActionListener{
public void actionPerformed(ActionEvent n){
StringTokenizer st = new StringTokenizer(searcher.getText());
suwords = new String[st.countTokens()];
for(int nt = 0; nt < rootDirectories.length; nt++){
new suchTh(rootDirectories[nt]);
}
}
}
void treeWalk(File file) {
if (file.isDirectory()) {
File[] children = file.listFiles();
for (int i = 0; i < children.length; i++) {
treeWalk(children[i]);
}
} else {
for(int t = 0; t < suwords.length; t++){
System.out.println(file.getName());
if(file.getName().contains(suwords[t])){
tabel.setText(tabel.getText() + file.getAbsolutePath());
}
}
}
}
class suchTh extends Thread {
public String wort;
public suchTh(String worter){
this.wort = worter;
this.start();
}
public void run()
{
File newfile = new File(driveC + "\\" + wort + "\\");
treeWalk(newfile);
}
}
class SetEvent implements ActionListener{
public void actionPerformed(ActionEvent c){
driveC = new File(LB.getText() + ":\\mygroups\\");
rootDirectories = driveC.list();
}
}
public static void main(String[] args) throws Exception {
new TestSuFu();
}
}
da teilweise viele daten drin sind, und es ewig daurn würde, mit einem thread alles zu durchsuchen, wird für jeden großen überordner (sind etwa 30 - 40) ein thread erstellt, der suchen soll.
so sieht der fehler für jeden thread aus, der erstellt wird:
Java:
Exception in thread "Thread-6" Exception in thread "Thread-18" java.lang.NullPointerException
at java.lang.String.contains(Unknown Source)
at de.spsb.irc.v1_0.TestSuFu.treeWalk(TestSuFu.java:85)
at de.spsb.irc.v1_0.TestSuFu.treeWalk(TestSuFu.java:80)
at de.spsb.irc.v1_0.TestSuFu.treeWalk(TestSuFu.java:80)
at de.spsb.irc.v1_0.TestSuFu$suchTh.run(TestSuFu.java:105)