Zum Inhalt springen

String aus Datei suchen! Bin total verzweifelt!!!!


DaBernie

Empfohlene Beiträge

Hi,

ich vesuche einen String aus einer Datei zu suchen

und mir das bestätigen zu lassen.

ich bin total verzweifelt!

Ich hoffe es kann mir jemand hier helfen!

//

//Lesen der Datei und umwandeln in einen String                        //

                        String text = "";

                        try 

                        {

                                BufferedReader finput = new BufferedReader(new FileReader("temp.txt"));                                String line;


                                while ((line = finput.readLine()) != null) {

                                        text = text + '\n' + line;

                                }

                                 finput.close();


                        } catch (FileNotFoundException ex) {

                                ex.printStackTrace();                        } catch (IOException ex) {

                                ex.printStackTrace();

                        }


                        StringTokenizer st = new StringTokenizer(text);

                        int sc = 0;

                        while(st.hasMoreTokens())                        {

                                if(st.nextToken().equals("404"))

                                {                                        sc++;

                                        st.nextToken();

                                }

                        }

                        System.out.println("404 " + sc + " mal enthalten");

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo liegt denn nun dein Problem?

Ich versteh nicht so recht wieso du erst die komplette Datei in einen String ein liest und erst danach anfängst diesen zu verarbeiten. Du kannst doch gleich auf die gelesene Zeile aus der Datei eine Suche nach deinem Pattern durchführen.

Bearbeitet von Schiller256
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde auch nicht mit einem StringTokinzer arbeiten, denn Du trennst damit einen String an bestimmten Zeichen auf

StringTokenizer (Java 2 Platform SE v1.4.2)

Du solltest, da Du auf die Existenz prüfen willst, reguläre Ausdrücke verwenden

Pattern (Java 2 Platform SE v1.4.2)

Ansonsten gebe ich den anderen Vorpostern recht: Datei zeilenweise durchlaufen und pro Zeile matchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

gestern als ich überhaupt untersucht habe,

ob überhaupt Strings eingelesen werden,

habe ich mir einfach line mit System.out.println();

wiedergeben lassen , innerhalb der ersten while schleife,

und es war eine leere Zeile vorhanden => kein eingelesener String.

Sorry ich habe vorher mit c gecodet und für mich ist die Logik nunmal die

lese ein bis Dateiende und gut ist. Ich kann es mir nicht erklären...

Ich bitte um Nachsicht ._.

euer

DaBernie

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also dann gebe ich mal das Codebeispiel an,

mit dem ich überprüfen will,

ob überhaupt etwas aus der Datei in die Stringvariable gepeichert wird.

String text = "";

                        try 

                        {

                                BufferedReader finput = new BufferedReader(new FileReader("temp.txt"));                                String line;


                                while ((line = finput.readLine()) != null) {

                                        text = text + '\n' + line;

//besagte Textstelle

                                        System.out.println(line);

                                }

                                 finput.close();


                        } catch (FileNotFoundException ex) {

                                ex.printStackTrace();                        } catch (IOException ex) {

                                ex.printStackTrace();

                        }


                        StringTokenizer st = new StringTokenizer(text);

                        int sc = 0;

                        while(st.hasMoreTokens())                        {

                                if(st.nextToken().equals("404"))

                                {      	

                                	sc++;

                                    st.nextToken();

                                }

                        }

                        System.out.println("404 " + sc + " mal enthalten");


                        while((bytes = input.read(buffer)) != -1){

                        response.write(buffer, 0, bytes);                        }

                        request.close();                        input.close();

                        socket.close();


                }

es erfolgt eine leere Zeile als Ausgabe.

mfg

DaBernie

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann es sein, dass Du bei Deinen Posts jeweils vergisst, konkrete Fragen zu stellen?

In Deinem letzten Codebeispiel sind diverse System.out.println()s. Die Frage ist, welcher ist der relevante? Beim Einlesen der Datei oder nach dem Tokenizen? Wenn beim Einlesen, warum ist das so? Wird die Datei nicht gefunden, ist sie leer, oder was läuft sonst schief? Aus der Ferne können wir Dir das nicht beantworten. Im Gegenteil, Du musst uns das sagen, damit wir eine sinnvolle Antwort geben können.

[EDIT] Zusätzlich solltest Du den Quellcode, den Du hier postest, noch mal korrekt formatieren (-> Einrückungen)[/EDIT]

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum benutzt Du immer noch den StringTokenizer, obwohl ich geschrieben hatte, dass das Pattern für Dein Vorhaben sinnvoller ist?

Außerdem verarbeitest Du Deine Daten nicht zeilenweise, das Pattern muss innerhalb der Schleife ausgeführt werden!

Der Code hat sich zu Deinem ersten Post nicht wirklich geändert

Link zu diesem Kommentar
Auf anderen Seiten teilen


package testFilePackage;


import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.regex.Pattern;


public class TestFileClass {


	/**

	 * @param args

	 */

	public static void main(String[] args) {

		try {

			BufferedReader in = new BufferedReader(new FileReader("C:\\archiv\\style.css"));

			String zeile = null;

			while ((zeile = in.readLine()) != null) {


				boolean b = Pattern.matches("[dein Regex]", zeile);

				if ( {

					System.out.println("Gelesene Zeile: " + zeile);

				}

			}

		} catch (IOException e) {

			e.printStackTrace();

	}


	}


}


[/code]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also ich habe jetzt die regexp bestimmt

bei der zu durchsuchenden datei.

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>404 Not Found</title>

</head><body>

<h1>Not Found</h1>

<p>The requested URL /Admin was not found on this server.</p>

<hr>

<address>Apache/2.2.3 (Debian) PHP/5.2.0-8+etch15 mod_ssl/2.2.3 OpenSSL/0.9.8c $

</body></html>
Und dieser Code soll jetzt prüfen ob in Zeile 3 "404" vorhanden ist.
//

                        try {

                			BufferedReader in = new BufferedReader(new FileReader("temp"));

                			String zeile = null;

                			while ((zeile = in.readLine()) != null) {

                				System.out.println("Gelesene Zeile: " + zeile);

                				boolean b = Pattern.matches("\n{^,@}?[:print:]?\n[:print:]?\n[:punct:][:alpha:][:punct:][40]{3}", zeile);

                				if ( {


                					System.out.println("Gelesene Zeile: " + zeile);

                					}

                			}

                		} catch (IOException e) {

                			e.printStackTrace();

                	}[/code]

und 3 mal dürft ihr raten :rolleyes:

funzt nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Hi

ich glaube du suchst einfach sowas oder???


try{

   BufferedReader input = new BufferedReader(new FileReader("test.txt"));                                

   String line;

   while ((line = input.readLine()) != null) {

      if(line.contains("Text der in der Datei vorkommen soll")){

         System.out.println("Hi es ist ein passender String gefunden worden");

      }

   }

   finput.close();


} catch (FileNotFoundException ex) {

   ex.printStackTrace();                        

}


naja lg Timo

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...


class String

public int indexOf(String aSubstring)

gibt die Position des Substrings im String zurück und -1 wenn es nicht drin vorkommt.

Du kannst den String auch char für char (mit char String.chatAt(int position)) durchgehen und selbst checken, wann die nachfolgenden chars alle übereinstimmen.

Link zu diesem Kommentar
Auf anderen Seiten teilen


class String

public int indexOf(String aSubstring)

gibt die Position des Substrings im String zurück und -1 wenn es nicht drin vorkommt.

Du kannst den String auch char für char (mit char String.chatAt(int position)) durchgehen und selbst checken, wann die nachfolgenden chars alle übereinstimmen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...