Texte innerhalb von Datei suchen

ich habe folgendes Problem und wäre für eine Antwort bzw. Hilfe sehr dankbar :wink: . Ich muss ein Programm schreiben das ein File auf macht sie liest und das Wort „procedures“ drinnen findet und die Zeile wo es ist ausgibt. Ich muss mein Chef so schnell wie möglich ein Demo davon zeige aber ich bin nicht so mächtig in JAVA . vielleicht könnt ihr mir ja helfen
mfg

[code java]
public static void main(String[] args) throws Throwable{
suchAlgoritmus objSuche = new suchAlgoritmus();
objSuche.auslesen();
}
public class suchAlgoritmus {
public void auslesen() throws IOException{
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try{
InputStreamReader inStream =new InputStreamReader( System.in ) ;
BufferedReader stdin = new BufferedReader( inStream );
String fileName;
System.out.println(„Geben Sie den Pfad ein wo das File sich befindet:“);
fileName = stdin.readLine();
File file = new File(fileName);
try{
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
String line = dis.readLine();
while (line != null) {
// line wird von File gelesen und auf den konsole.
System.out.println(line);
// hier muss „private void durchsuchen…“ aufgerufen werden
this.durchsuchen(dis.readLine());

line = dis.readLine()
fis.close();
bis.close();
dis.close();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.err.println („Unable to read from file“);

}
}

private void durchsuchen(String Line){
//Hier den Suchalgorytmus rein und die Line durchsuchen und ich weiß indexOf() muss die Arbeit machen aber wie!!!
String searchtext = “…”
while((line = in.readLine())!= null) {
if(line.indexOf(searchText) > -1) {
foundLines++;
if(!foundInFile) {
foundInFile = true;
System.out.println(„Ergebnis in Datei:“ + file.getAbsolutePath());
}
System.out.println("Zeile " + in.getLineNumber() + ": " + line);
}

}
}
[/code java]

Hallo erstmal!

Die Methode durchsuchen() sieht auf den ersten Blick doch schon fast fertig aus. Wenn du jetzt noch „…“ durch „procedures“ (und das Semikolon nicht vergisst), sollte das so schon funktionieren.

Gruß, Jan

Danke für deine schnelle Antwort. Theoretisch hast du recht! aber wie kann ich so ausführen dass es kein Fehler Meldung gibt???

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!

Danke für deine schnelle Antwort. Theoretisch hast du recht!
aber wie kann ich so ausführen dass es kein Fehler Meldung
gibt???

Die Fehlermeldungen abarbeiten. Du bekommst ja präzise gesagt, in welcher Zeile ein Fehler sich befindet. foundInFile und foundLines z.B. sind - zumindest in dem Teil, den du gepostet hast - nirgends deklariert. Dort, wo die Bezeichner erstmals auftreten, müsste es eine „cannot find symbol“-Meldung geben.

Jan

Hallo gazale,

ich habe folgendes Problem und wäre für eine Antwort bzw.
Hilfe sehr dankbar :wink: . Ich muss ein Programm schreiben das
ein File auf macht sie liest und das Wort „procedures“ drinnen
findet und die Zeile wo es ist ausgibt. Ich muss mein Chef so
schnell wie möglich ein Demo davon zeige aber ich bin nicht so
mächtig in JAVA . vielleicht könnt ihr mir ja helfen

Da ich auch kein Java kann, hab ich das mal zum
Anlaß genommen, das mal zu probieren. Allerdings hab
ich es vorher in Perl geschrieben und dann nach java
übersetzt. Vielleicht ist das ja ein Anhaltspunkt für
Dich.

Das ist in Perl:

$\> perl -lne 'print "$.\t$&\n" if /procedures/' dateipfad.txt

und das wäre meine Java-variante davon:
[Main.java]

package textfind;
import java.io.\*;
import java.util.regex.\*;

class Main {
 static String suchtext = "procedures";

 public static void main(String args[]) {
 try {
 // Dateinamen abfragen:
 InputStreamReader inStream =new InputStreamReader(System.in);
 BufferedReader stdin = new BufferedReader(inStream);
 System.out.println("Geben Sie den kompletten Dateinamen an:");
 String fn = stdin.readLine();

 // Datei oeffnen:
 FileInputStream fh = new FileInputStream(fn);
 DataInputStream in = new DataInputStream(fh);
 BufferedReader br = new BufferedReader(new InputStreamReader(in));

 String zeile;
 Pattern p = Pattern.compile(suchtext) ;
 int count = 0;

 while( (zeile = br.readLine()) != null ) {
 ++count;
 // suchAlgoritmus:
 if( p.matcher(zeile).find() == true )
 System.out.println(count + "\t" + suchtext + "\n");
 }

 in.close();
 }
 catch(Exception e) { System.err.println("Bummer: "+e.getMessage()); }
 }
}

Dein Ansatz erscheint mir für den geforderten Zweck *zu*
komplex.

Grüße & viel Erfolg

CMБ

Danke Dir

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]