0

文字列が存在しない場合にのみ、文字列をファイルに書き込もうとします。これが私のコードです

File rule_file = new File("test_rules.rules");
Scanner scanner = new Scanner(rule_file);
PrintWriter writer = new PrintWriter(new FileWriter(rule_file,true));

        while (scanner.hasNextLine()) 
        {
            String lineFromFile = scanner.nextLine();
            if(!rule_write.equals(lineFromFile))
            {
               if(unique.get(nilai_besar).getCount()>10)
               {
                        writer.write(rule_write);
                        writer.close();
                        break;
               }
            }
        }

ただし、プログラムは、文字列が既にファイルに存在する場合でも、文字列をファイルに書き込み続けます。助けてください、ありがとう...

4

3 に答える 3

2

等しくないすべての行について、(潜在的に)ファイルに書き込もうとします。

あなたが望むのは、すべての行が等しくない場合にファイルに書き込むことです:

    boolean found = false;
    while (scanner.hasNextLine()) 
    {
        String lineFromFile = scanner.nextLine();
        if (rule_write.equals(lineFromFile))
        {
           found = true;
           break;
        }
    }

    if (!found) {
        // append rule_write to the file
        ...
    }
于 2013-11-08T08:27:14.420 に答える
0

equals() および equalsIgnoreCase() と一緒に、またはその代わりにindexOf()contains()

あなたが読んだ行に含まれている可能性があると確信しています

  • 空欄(前後)
  • 次の回線の問題が発生する可能性があります

indexOf()またはを使用するcontains()と、行に文字列 ( rule_write)があるかどうかがチェックされます。

値が入っていることを確認してくださいwhile()

于 2013-11-08T08:26:23.580 に答える