2016-07-29 5 views
0

私はJavaでチャットボットを作っています。特定のトピックについて(ランダムに)環境設定を生成し、環境設定をファイルに書き込むことができるようにしたいと思います。たとえば、私がチャットボットに「ケーキが好きですか?」と尋ねるとかつては "ケーキ"について尋ねられていませんでしたが、それはランダムな好み(trueまたはfalse)を生成します。次に、ファイル( "chatbotPreferences.txt"など)にその嗜好を書き込みます。これは、後で "ケーキ"の件名が再び発生した場合に取得できます。私がこれを持っている主な問題は、プログラムを実行するたびにファイルが上書きされることです。だから私は "ケーキ"とそれについて議論すると、 "ケーキ=真"をファイルに書き込んだ後、再度実行して "パイ"と "パイ= false"をファイルに表示するかもしれませんが、 "cake = true "はリストされていません。
上書きされないようにする方法はありますか?これを行うための他のアイデアは誰にもありますか?私はあなたがファイルを書き込む方法を知りませんが、FileWriterを使用して、それは非常に簡単ですあなたに上書きせずにJavaのテキストファイルに追加するにはどうすればよいですか?

+1

質問が*逐語*で検索エンジンを使用してみましたか?これは頻繁に尋ねられますが、見つけても問題はありません。 – Polygnome

+4

このリンクにアクセスする[ファイルへの既存のファイルへの追加方法](http://stackoverflow.com/questions/1625234/how-to-append-text-to-an) -existing-file-in-java) – kar09

答えて

0

ありがとう:
パスtrueをコンストラクタの2番目のパラメータとして。

+0

ファイルへの書き込みに問題はありません。問題は、新しい設定を書き込むときに、ファイル内のすべてのものを上書きすることです。私は他のすべてを削除することなく何かを追加することはできません。 –

+0

どのようにファイルを開きますか? –

+0

@Robert Koch氏によると、PrintWriterは使わないでください。代わりにFileWriterを使用し、追加モードを使用して作成します。 – FredK

0

あなたはそうのようなデータを読み込むために、ScannerStringのArrayListを使用することができます。

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(); 

次にあなたがそうのように、ArrayListの中add()方法を使用して、リストに物事を追加することができます。

things.add("cake=true"); 

最後に、保存するときには、あなたのリストからすべてを読んでください。そこ保存するための様々な方法がある(と、それはあなたがすでにこれをやったような音)が、ここでは一例です:あなたはFileWrite関数のコンストラクタに真追加する必要があり、上記の

import java.io.*; 
try { 
    PrintWriter writer = new PrintWriter("chatbotPreferences.txt"); 
    for (String s : things) 
     writer.println(s); 
    writer.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

OK!助けてくれてありがとう。私はここからそれを理解することができると思う。 :D –

+1

あなたの質問に答えるなら、答えを受け入れてください。 –

0

ように。実際に動作していることを示す例を以下に示します。このコードを複数回実行すると、上書きしないテキストが追加されます。

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(); 

    } 
} 
関連する問題