2016-11-10 12 views
0

私のコードの目的は、Scannerを使ってテキストファイルを読んだ後に、テキストフィールドでユーザーの入力を受け入れることです。スキャナを使用してテキストファイルの単語を置き換えるにはどうすればよいですか?

スキャナは、テキストファイル内を繰り返してそのユーザー入力のインスタンスを見つけようとします。その入力が見つかると、テキストファイル内の単語を置き換えます。

次に、その単語に変更を加えてファイルに書き戻します。

私の問題は、スキャナを使用する前にスキャナを使用していないことです。正しく処理する方法がわかりません。ここで

は私のコードは、ボタンをクリックするだけで活性化するこれまでのところです:

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 
    } 

は、どのように私は、テキストファイル内の単語を置き換えるためにScannerを使用していますか?そうするために別のクラスを使用するのですか?

私のコードをどのように進めるかについては固執していますので、どんな助けでも大歓迎です。

+0

だから、「* Scanner」を使ってファイルを読みたいのですか?どのようにファイルを書きたいのですか? 'FileWriter'の周りの' PrintWriter'ですか?もしそうなら、なぜ 'FileReader'の周りに' BufferedReader'を使って読むのでしょうか? --- *参考:*あなたがしているのはフルラインを読むことだけで、 'BufferedReader'は' Scanner'より** **倍速くらいです。これは本当にslooowwwwww *です。 – Andreas

+0

ファイルのすべての行を読み込み、テキストファイル内のユーザー入力のインスタンスを別のユーザー入力に置き換えたいとします。私は、スキャナを使用して行をスキャンして単語を置き換える最良の方法であると言われました。私は 'Scanner'を使って単語を置き換える方法が不明です。私はJavaを使い慣れていないので、他のどのクラスを使うのか分かりません。 – juiceb0xk

+0

'Scanner'を使って単語*を置き換えることはできません。 'Scanner 'は*読み*(別名スキャン)入力に使用されます。あなたは正規表現についてまだ学んでいないと思うので、おそらく 'indexOf()'と 'substring()'はおそらく文字列中のテキストを置き換えるために使用するはずのメソッドです。 – Andreas

答えて

0

Scannerクラスを使用することはできません。 Scannerクラスは読み取り専用です。

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

それとも、またBufferedWriterまたはFileWriterを見ることができます:あなたは、以下のように言葉を置き換えることができます。 here

関連する問題