Ich arbeite daran, einen Chatbot in Java zu erstellen, und ich möchte, dass er Präferenzen (zufällig) zu bestimmten Themen generieren und die Präferenz in eine Datei schreiben kann. Zum Beispiel, wenn ich den Chatbot frage "Magst du Kuchen?" und es wurde noch nicht nach "Kuchen" gefragt, es wird eine zufällige Präferenz (wahr oder falsch) erzeugen. Es schreibt dann in eine Datei ("chatbotPreferences.txt" oder etwas Ähnliches) seine Präferenz, die später wieder abgerufen werden kann, wenn das Thema "Kuchen" wieder auftaucht. Das Hauptproblem, das ich damit habe, ist die Datei überschreiben jedes Mal, wenn ich das Programm ausführen. Also wenn ich mit ihr "Kuchen" bespreche, und es "Kuchen = wahr" in die Datei schreibt, dann lasse ich es nochmal laufen und frage nach "Kuchen" und "Kuchen = falsch" könnte in der Datei vorkommen, aber "Kuchen = wahr "ist nicht aufgeführt.
Gibt es eine Möglichkeit zu verhindern, dass es überschrieben wird oder hat jemand andere Ideen dafür? Vielen Dank, dass SieWie füge ich eine Textdatei in Java an, ohne sie zu überschreiben?
Antwort
Ich weiß nicht, wie Sie die Datei schreiben, aber mit einem FileWriter
, es ist ganz einfach:
Pass true
als zweiter Parameter an den Konstruktor.
Ich habe keine Probleme beim Schreiben in die Datei. Das Problem ist, wenn ich eine neue Einstellung schreibe, überschreibt es alles andere in der Datei. Ich kann nichts hinzufügen, ohne dass alles gelöscht wird. –
Wie öffne ich die Datei? –
Wie @Robert Koch sagte, verwende keinen PrintWriter. Verwenden Sie stattdessen einen FileWriter und erstellen Sie ihn im Append-Modus. – FredK
Sie Scanner
und String
Arraylist verwenden könnten, wie dies in den Daten zu lesen:
import java.util.*;
Scanner in = new Scanner(new File("chatbotPreferences.txt"));
List<String> things = new ArrayList<String>();
while (in.hasNext())
things.add(in.nextLine());
in.close();
Dann Sie die Dinge auf Ihre Liste mit der add()
Methode in Arraylist hinzufügen könnten, etwa so:
things.add("cake=true");
Schließlich, wenn es Zeit zum Speichern ist, lesen Sie einfach alles aus Ihrer Liste. Es gibt verschiedene Möglichkeiten zu sparen (und es klingt wie Sie dies bereits getan haben), aber hier ist ein Beispiel:
import java.io.*;
try {
PrintWriter writer = new PrintWriter("chatbotPreferences.txt");
for (String s : things)
writer.println(s);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
OK! Danke euch allen für die Hilfe. Ich denke, ich kann es von hier aus herausfinden. : D –
Könnten Sie bitte die Antwort akzeptieren, wenn sie auf Ihre Frage antwortet? –
Wie oben erwähnt, Sie auf den Filewrite Konstruktor wahr hinzufügen müssen. Hier ist ein Beispiel, das es in Aktion zeigt. Wenn Sie diesen Code mehrmals ausführen, wird der Text nicht überschrieben.
import java.io.*;
public class FileWriting{
public static void main(String[] args)throws Exception{
FileWriter fw= new FileWriter("test.txt",true); //by adding true you can add to a pre-existing file
PrintWriter pw= new PrintWriter(fw);
pw.println("line 1");
pw.println("line 2");
pw.println("line 3");
pw.println("line 4");
pw.close();
FileReader fr= new FileReader("test.txt");
BufferedReader br= new BufferedReader(fr);
String x;
do{
x= br.readLine();
System.out.println(x);
}while(x!=null);
br.close();
}
}
Haben Sie versucht, eine Suchmaschine mit Ihrer Frage * verbatim * zu verwenden? Dies ist so oft gefragt, Sie sollten keine Probleme haben, es zu finden. – Polygnome
Gehen Sie zu diesem Link [how-to-anfügen-Text-zu-einer-bestehenden-Datei-in-Java] (http://stackoverflow.com/questions/1625234/how-to-append-text-to-an -existing-file-in-java) – kar09