nach wörter in einem textfile suchen

gazale_m

Mitglied
Hi,
ich bin dabei ein Program zu schreiben (ich bin kein Profi) der ein beliebiges File aufmacht und den vorgegebenen Wort drinnen findet.
Mit meinem Programm habe ich das File aufmachen können aber wie kann ich es parsen und die Wörter die ich festlege drinnenl finden? für jeder Hilfe bin ich sehr dankbar.:confused:

Code:
public class findMatches {
    //main method
	public static void main(String[] args) throws Throwable {
             //Stream to read file
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		DataInputStream dis = null;
		try{
			InputStreamReader inStream =new InputStreamReader( System.in ) ;
		    BufferedReader stdin = new BufferedReader( inStream );
		    String inFile;
		    System.out.println("Geben Sie den Pfad ein wo das File sich befindet:");
		   
		    inFile = stdin.readLine();
			
		    File file = new File(inFile);
		    
		    FileReader reader = new FileReader(file);
		    BufferedReader br = new BufferedReader (reader);
	
		try{
			fis = new FileInputStream(file);
			 // Here BufferedInputStream is added for fast reading.
		      bis = new BufferedInputStream(fis);
		      dis = new DataInputStream(bis);
		      while (dis.available() != 0) {

		          // this statement reads the line from the file and print it to
		            // the console.
		            System.out.println(dis.readLine());
		          }

		          // dispose all the resources after using them.
		          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");
			
			}
		

	}
 
Wie komplex soll die Suche denn sein und wie Groß sind die Dateien? Sollten Wörter über Zeilenumbrüche hinaus erkannt werden?

Eine einfache Suche wäre zB mit BufferedReader.readLine() die Datei Zeilenweise auszulesen und dann mit String.indexOf() nach dem Wort zu suchen. Dann könntest du zB ausgaben wie "Das Wort "abc" wurde in der Zeile 3 zweimal gefunden" machen.
 
Danke für deine Schnelle Antwort. Die such sollte am anfang von einem gewöhnlichen Text datei mit vilen Zeilen umbruche 30 mögliche wörter finden können. wo muss ich den Suchcode in meinem Program einfugen
 
Hallo,

du sollest nicht alles in die main-Methode packen. Die soll nämlich eigentlich nur zum starten des Programms dienen.

Ich würde das Auslesen der Zeilen und den Suchalgorytmus in zwei verschiedene Methoden packen ;)

Wenn Wörter über Zeilenumbrüche hin getrennt sein können, dann solltest du zusätlich noch prüfen, ob das letzte Zeichen in einer Zeile ein "-" (Trennstrich) ist.
 
mein Program öffnet den File jetzt muss es parsen und die Worter finden. Du hast vorgeschlagen das ich 2 getrennte Methoden schreiben soll. Würdest du mir helfen und sagen WO genau kann ich sie einfügen und wie konnen sie von main ausgeführt werden? Ich danke die viel Mals
 
Also, wenn ich das jetzt richtig verstehe, hast du noch nicht so viel Erfahrung in Java, oder?

Also, erstmal legst du eine weiter Klasse an. Die kannst du z.B. Suchalgorytmus nennen.
In dieser Klasse legst du 2 Methoden an:

Java:
public void auslesen(){
...
  try{
	fis = new FileInputStream(file);
	 // Here BufferedInputStream is added for fast reading.
	bis = new BufferedInputStream(fis);
	dis = new DataInputStream(bis);
	while (dis.available() != 0) {

	  // this statement reads the line from the file and print it to
	  // the console.
	   this.durchsuchen(dis.readLine());
	}
....
}

private void durchsuchen(String _strZeile){
  //Hier den Suchalgorytmus rein und die _strZeile durchsuchen
}

Die Main-Methode sollte ungefähr so aussehen:
Java:
Suchalgorytmus objSuche = new Suchalgorytmus();
objSuche.auslesen();

Ich hoffe mal, das hilft dir weiter ;)
 
Ja, das stimmtbis jetzt habe ich immer kleine Bausteine programmiert. Jetzt will ich aber ein komplete programm selber schreiben. Aber es ist noch schwer anzufangen.
 
Und deshalb baut man sein Programm auch aus kleinen Bausteinen auf. Die nennen sich Klassen und Methoden.

Mit der Aussage: "Aber es ist noch schwer anzufangen" wird es schwer werden, dir zu helfen :rolleyes:
 
Zurück