D
Dine89
Gast
Hallo ihr,
ich hoffe ihr könnt mir helfen. Ich sitze an meinem Abschlussprojekt für die IHK Prüfung. Ich mache meine Ausbildung zur Fachinformatikerin AE.
Mein Problem ist, dass ich ein Programm schreiben soll, dass mehrere Strings aus einer Liste einliest und diese Strings dann in Dateien suchen soll. Die Dateien, die durchsucht werden sollen, dass sind tausende.
Ich habe auch schon eine Suchfunktion erstellt, die funktioniert soweit auch, aber die dauert viiiieeeel zu lange.
ich hoffe ihr könnt mir helfen. Ich sitze an meinem Abschlussprojekt für die IHK Prüfung. Ich mache meine Ausbildung zur Fachinformatikerin AE.
Mein Problem ist, dass ich ein Programm schreiben soll, dass mehrere Strings aus einer Liste einliest und diese Strings dann in Dateien suchen soll. Die Dateien, die durchsucht werden sollen, dass sind tausende.
Ich habe auch schon eine Suchfunktion erstellt, die funktioniert soweit auch, aber die dauert viiiieeeel zu lange.
Java:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Search {
// Attribute
Vector v2;
String suchordner;
BufferedWriter writer;
BufferedWriter helpWriter;
String wordToFind;
boolean append;
String outputFile;
int i = 0;
String qryCopy;
String hitordner;
String dest;
// Konstruktor
public Search(Vector v2, String ordner, String qryCopy, String hitordner) {
// TODO Auto-generated constructor stub
this.v2 = v2;
this.suchordner = ordner;
this.qryCopy = qryCopy;
this.hitordner = hitordner;
outputFile = "log.txt";
try {
//System.out.println( j + ": " + v2.elementAt(j) );
startScanning(new File(ordner), v2, outputFile, i);
i++;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Output out = new Output();
}
public void startScanning(File dir, Vector v2, String outputFile, int i) throws IOException{
this.wordToFind = wordToFind;
try {
// writer für LogDatei
writer = new BufferedWriter(new FileWriter(outputFile, true));
//writer für Hilfsfile
helpWriter = new BufferedWriter(new FileWriter("help.txt", true));
// Schreiben in LogDatei
if(i == 0){
SimpleDateFormat formatter = new SimpleDateFormat ("dd.MM.yyyy 'at' HH:mm:ss ");
Date currentTime = new Date();
writer = new BufferedWriter(new FileWriter(outputFile, true));
writer.append("~~~~~~~~Suchvorgang: " + formatter.format(currentTime) + "~~~~~~~~");
writer.newLine();
writer.newLine();
}
readDir(dir);
} finally{
if(writer!= null)
try { writer.close(); } catch (IOException e) { }
if(helpWriter!= null)
try { helpWriter.close(); } catch (IOException e) { }
}
}
// Auflisten der Files
public void readDir(File dir) throws IOException{
if(dir.isDirectory()){
File[] files = dir.listFiles();
for(File file: files){
System.out.println(file.getName());
readDir(file);
}
}else{
readInFile(dir);
}
}
// Durchsuchen der Dateien
public void readInFile(File file) throws IOException{
BufferedReader reader =null;
try {
for ( int j=0; j < v2.size(); j++ ){
wordToFind = (String) v2.elementAt(j);
reader = new BufferedReader(new FileReader(file));
String line = null;
int lineNumber =0;
boolean found = false;
while((line= reader.readLine()) !=null) {
lineNumber++;
if(line.contains(wordToFind)){
if(!found) {
// Schreiben in LogDatei
writer.append(file.getAbsolutePath()+":\r\n");
writer.newLine();
// Schreiben in Hilfsdatei
helpWriter.append(file.getAbsolutePath()+":\r\n");
helpWriter.newLine();
if(qryCopy == "OK"){
dest = hitordner + "\\" + file.getName();
Copy kopieren = new Copy(file.getAbsolutePath(), dest);
}
found = true;
}
try {
// Schreiben in LogDatei
writer.append(lineNumber+": "+line+"\r\n");
writer.newLine();
// Schreiben in Hilfsdatei
helpWriter.append(lineNumber+": "+line+"\r\n");
helpWriter.newLine();
} catch (IOException e) {
System.out.println("Fehler beim Schreiben!!");
e.printStackTrace();
}
}
}
}
}finally{
reader.close();
}
}
}
[code=Java]
Ich hoffe es ist verständlich,was ich hier mache. Die Strings, die in den Dateien gesucht werden müssen, habe ich vorher in einem Vector geschrieben. Habt ihr vllt eine schnellere Lösung? Ich habe schon überall gesucht, aber ich finde einfach ncihts.