Hey together,
ich möchte eine variable Anzahl von Dateiinhalten auf Schlüsselwörter (welche ebenfalls in einer Datei stehen) überprüfen und ausgeben lassen, falls das Schlüsselwort gefunden wird. Da die Anzahl und Größe sehr hoch ist soll das ganze in einem Thread geschehen. Und zwar mit Hilfe des Interface Callable, da dieses einen Rückgabewert liefern kann. Jetzt hab ich das getreu Java Core 2 nachimplementiert doch leider ohne Verbesserung der Laufzeit. Hier mal der Code...Hoffe mir kann jemand helfen...beim debuggen stellte ich fest, dass nur 1 Thread gestartet ist.
Sooo und hier die Klasse MyCallable...in der call-Methode wird die Prüfung übernommen, ob das schlüsselwort in der Datei enthalten ist.
ich möchte eine variable Anzahl von Dateiinhalten auf Schlüsselwörter (welche ebenfalls in einer Datei stehen) überprüfen und ausgeben lassen, falls das Schlüsselwort gefunden wird. Da die Anzahl und Größe sehr hoch ist soll das ganze in einem Thread geschehen. Und zwar mit Hilfe des Interface Callable, da dieses einen Rückgabewert liefern kann. Jetzt hab ich das getreu Java Core 2 nachimplementiert doch leider ohne Verbesserung der Laufzeit. Hier mal der Code...Hoffe mir kann jemand helfen...beim debuggen stellte ich fest, dass nur 1 Thread gestartet ist.
Code:
public class FileTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File f = new File("C:/Users/XMLPlzDatei /Sheets1_12/plz_neu2");
File[] fileArray = f.listFiles();
for (File file : fileArray) {
ArrayList<Future<String>> result = new ArrayList<Future<String>>();
MyCallable demoThread = new MyCallable(file);
FutureTask<Vector> task = new FutureTask<Vector>(demoThread);
Thread t = new Thread(task);
t.start();
try {
System.out.print(task.get() + "\n");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Sooo und hier die Klasse MyCallable...in der call-Methode wird die Prüfung übernommen, ob das schlüsselwort in der Datei enthalten ist.
Code:
public class MyCallable implements Callable<Vector> {
private File directory;
private static Vector vec_ausgabe = new Vector();
public MyCallable(File directory) {
this.directory = directory;
}
@Override
public Vector call() throws Exception {
// TODO Auto-generated method stub
try {
boolean insert = false;
FileInputStream lFiInput = new FileInputStream(directory
.getAbsolutePath());
BufferedReader br = new BufferedReader(new InputStreamReader(
lFiInput));
String lLine;
// System.out.println(file);
// Vector ausgabe = new Vector();
try {
Segment sendung = new Segment();
while ((lLine = br.readLine()) != null) {
if (lLine.contentEquals("BENV")) {
insert = true;
sendung = new Segment();
sendung.setContent(lLine);
}
else if (lLine.contains("EENV")) {
// sendung.setContent(lLines);
insert = false;
sendung.setContent(lLine);
FileInputStream lFiInputPruef = new FileInputStream(
new File(
"C:/Users/twilfer/Documents/Aktenzeichen.txt"));
BufferedReader br_pruef = new BufferedReader(
new InputStreamReader(lFiInputPruef));
String lLine_pruef;
while ((lLine_pruef = br_pruef.readLine()) != null) {
String aktenzeichen = lLine_pruef;
boolean ausgabe_bool = sendung
.isIncluded(aktenzeichen);
if (ausgabe_bool == true) {
vec_ausgabe.add(sendung);
}
}
} else if (insert) {
sendung.setContent(lLine);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// ausgabe.clear();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return vec_ausgabe;
}
}