# String in Datei finden



## Schaaaf (28. Jun 2010)

Hallo,

ich habe eine *.txt Datei. Nun möchte ich gerne diese Datei nach einer bestimmten Zeile durchsuchen  und anschließend alle vorherigen Zeilen inkl. der gefundenen löschen. Zum Suchen der Zeile habe ich folgenden Code verwendet:

```
String pattern = "Suchstring";
		File file = new File("C:/Daten/datei.txt");
		FileReader freader = new FileReader(file);
		BufferedReader reader = new BufferedReader(freader);
		// StringBuffer buffer = new StringBuffer();

		while(true)
		{
		String line = reader.readLine();
		if(line != null)
		{
		// buffer.append(line);
		if(line.indexOf(pattern) > -1)
		{
			System.out.println(line.indexOf(pattern));
		// FOUND 
		}
		}
		else break;
```

Aber irgendwie stimmt die Stelle in der Datei nicht.

Kann mir jemand weiterhelfen?


----------



## SlaterB (28. Jun 2010)

was genau stimmt denn irgendwie nicht,
welche Testdatei verwendest du (als Anhang hochladen), 
welchen String suchst du bzw. das sieht man ja schon
und was bekommst du als Ergebnis, welche Zeile, welcher Index, inwiefern gefällt dir das nicht?

nach dem Fund schlage ich vor, den noch offenen Rest der Datei in eine neue zweite zu schreiben 
und diese danach an die Position der ersten Datei zu verschieben


----------



## Schaaaf (28. Jun 2010)

Ich habe einfach irgendetwas in eine Datei geschrieben und dann nach einem beliebigen String gesucht.
Habe jetzt aber festgestellt, dass ich mit 
	
	
	
	





```
System.out.println(line.indexOf(pattern));
```
den Index des Strings in der Zeile bekomme... Aber nicht die Nummer der Zeile...
Wie komme ich an die? Weil das andere bringt mich ja nicht weiter.


----------



## Gast2 (29. Jun 2010)

Du liest die datei ja zeilenweise ein, die aktuelle Zeile steht bei dir in 
	
	
	
	





```
line
```
.
Nun lässt du einfach einen zähler mitlaufen und zählst wie oft du dir ne neue zeile gelesen hast.


----------



## Schaaaf (23. Jul 2010)

Kann mir nochmal jemand helfen? Wo muss ich den Zähler einfügen? Bin irgendwie verwirrt..


----------



## SlaterB (23. Jul 2010)

welche Stellen hast du denn alle zur Auswahl? bei nur 20 Codezeilen könntest du es alleine durch ausprobieren lösen

denken ist aber auch nicht verboten: bei jedem Schleifendurchlauf liest du eine Zeile ein, 
wieso nicht genau an dieser Stelle auch eine Variable um 1 erhöhen?

wenn das schwer war, oje


----------

