2016-11-10 3 views
0

Also das Ziel meines Codes ist es, die Textdatei mit Scanner zu lesen und dann die Benutzereingabe über Textfelder zu nehmen.Wie ersetze ich ein Wort in meiner Textdatei mit Scanner?

Der Scanner wird dann die Textdatei durchlaufen, um eine Instanz dieser Benutzereingabe zu finden. Wenn diese Eingabe dann gefunden wird, ersetzt sie das Wort in der Textdatei.

Ich schreibe dann zurück in die Datei, mit nur diesem einen Wort geändert.

Mein Problem ist, dass ich nicht Scanner vor und durch die Dokumente verwendet habe, bin mir nicht sicher, wie Sie richtig vorgehen.

Hier ist mein Code so weit, dass an dem Klick auf eine Schaltfläche aktiviert:

Scanner read = new Scanner("test test.txt"); 

    //Converting user input from editSerialField to a scanner 
    Scanner scEditSerial = new Scanner(editSerialField.getText()); 
    String scSerial = scEditSerial.nextLine(); 
    //Converting user input from editLocationField to a scanner 
    Scanner scEditLocation = new Scanner(editLocationField.getText()); 
    String scLocation = scEditSerial.nextLine(); 

    while (read.hasNextLine()) 
    { 
     //If my text file contains the user input from the text field 
     if (read.hasNext(scSerial)) 
     { 
      //Code to replace instance of editSerialField in text file 
     } 

     //Code to write back to the file 
    } 

Wie verwende ich Scanner Worte in einer Textdatei zu ersetzen? Soll ich eine andere Klasse verwenden?

Ich bin fest, wie mit meinem Code fortfahren, so würde jede Hilfe sehr geschätzt werden.

+0

Also * warum * möchten Sie 'Scanner' verwenden, um die Datei zu lesen? Wie wollen Sie die Datei schreiben? 'PrintWriter' um' FileWriter'? Wenn ja, warum nicht mit 'BufferedReader' um 'FileReader' lesen? --- * Fyi: * Wenn Sie nur ganze Zeilen lesen, ist 'BufferedReader' ** viele ** mal schneller als' Scanner', was * wirklich slooowwwww * ist. – Andreas

+0

Ich möchte alle Zeilen meiner Datei lesen und eine Instanz der Benutzereingabe in der Textdatei durch eine andere Benutzereingabe ersetzen. Mir wurde gesagt, benutze 'Scanner' wäre der beste Weg, um durch die Zeilen zu scannen und ein Wort zu ersetzen. Ich bin mir nicht sicher, wie ich Wörter mit 'Scanner' ersetzen kann. Ich bin neu in Java, also weiß ich nicht, welche anderen Klassen zu verwenden sind. – juiceb0xk

+0

Sie können Wörter * nicht mit 'Scanner' ersetzen. 'Scanner' wird zum * Lesen * (alias Scannen) Eingang verwendet. Sie sind wahrscheinlich zu neu, um noch etwas über Regex gelernt zu haben. Daher sind 'indexOf()' und 'substring()' wahrscheinlich die Methoden, die Sie verwenden sollten, um Text in einer Zeichenkette zu ersetzen. – Andreas

Antwort

0

Sie können es nicht mit Scanner Klasse tun. als Scanner Klasse wird nur zum Lesen verwendet. Sie können die Wörter ersetzen, wie unten:

Path path = Paths.get("test.txt"); 
Charset charset = StandardCharsets.UTF_8; 

String content = new String(Files.readAllBytes(path), charset); 
content = content.replaceAll("foo", "bar"); 
Files.write(path, content.getBytes(charset)); 

Oder Sie können auch BufferedWriter oder FileWriter sehen. Sie können das Arbeitsbeispiel durchlaufen here

Verwandte Themen