Hallo,
ich benötige eine Methode, die mir eine Reihe von Dateien nach einem String durchsucht und die Zeile in der der String steht vollständig herausschreibt. dafür habe ich mir folgende Methode gemacht:
Die Ausgabe ist folgende:
Das Problem liegt denke ich offen, hat jemand eine Lösung dafür? Ich habe leider keine. An der Methode getPaths() liegt es nicht, die liefert alle Dateien in einem Ordner rekursiv zurück. Vielen Dank im vorraus
Ananaskirsche
ich benötige eine Methode, die mir eine Reihe von Dateien nach einem String durchsucht und die Zeile in der der String steht vollständig herausschreibt. dafür habe ich mir folgende Methode gemacht:
Java:
@SuppressWarnings("resource")
public static int SearchAndWrite(String pathToDir, String pathToOutput, String token)
{
//Anlegen der File-Variablen
File dir = new File(pathToDir);
File output = new File(pathToOutput);
ArrayList<File> fileList = new ArrayList<>();
getPaths(dir, fileList);
//Erstellen der Reader und Writer
FileReader reader = null;
BufferedReader r = null;
FileWriter writer = null;
BufferedWriter w = null;
for(int i = 0; i < fileList.size(); i++)
{
File searchFile = fileList.get(i);
if(searchFile.isDirectory())
{
break;
}
//Init der Reader&Writer
try
{
reader = new FileReader(searchFile.getAbsoluteFile());
r = new BufferedReader(reader);
writer = new FileWriter(output);
w = new BufferedWriter(writer);
}
catch(IOException e)
{
System.err.println(e);
}
String buffer = null;
int lineCounter = 0;
boolean header = false;
try
{
while((buffer = r.readLine()) != null)
{
lineCounter++;
if(buffer.contains(token))
{
if(header == false)
{
w.write(searchFile.getAbsolutePath() + "\n");
header = true;
}
w.write(lineCounter + " " + buffer + "\n");
}
}
w.flush();
writer.flush();
}
catch(IOException e)
{
System.err.println(e);
}
}
Code:
/home/hans/Schreibtisch/TestDir/1/Yasou
1 Test
2 TestTest
4 Kill my Test
5 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
6 1 Test
9 2 TestTest
14 4 Kill my Test
17 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
18 1 Test
21 2 TestTest
26 4 Kill my Test
29 5 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
32 6 1 Test
39 9 2 TestTest
50 14 4 Kill my Test
57 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
58 1 Test
61 2 TestTest
66 4 Kill my Test
69 5 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
72 6 1 Test
79 9 2 TestTest
90 14 4 Kill my Test
97 17 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
100 18 1 Test
107 21 2 TestTest
118 26 4 Kill my Test
125 29 5 /home/hans/Schreibtisch/TestDir/1/Hallo 2)
132 32 6 1 Test
147 39 9 2 TestTest
170 50 14 4 Kill my Test
Das Problem liegt denke ich offen, hat jemand eine Lösung dafür? Ich habe leider keine. An der Methode getPaths() liegt es nicht, die liefert alle Dateien in einem Ordner rekursiv zurück. Vielen Dank im vorraus
Ananaskirsche
Zuletzt bearbeitet: