0

i try to write String to file only if String not exist, this is my code

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

but, the program keep write String to file even the String already exist in file. Please help, thanks...

4

3 回答 3

4

您可以在仅检查文件的一行之后编写额外的行。

我建议您将文件读到最后,而不是尝试写入,直到您知道该行确实出现在文件中的任何位置。

即我会使用 PrintWriter.println() 并且我会在搜索循环之后移动所有用于写入的代码。

于 2013-11-08T08:22:33.657 回答
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

使用indexOf()contains()代替 equals() 和 equalsIgnoreCase(),

我相信你读到的那行可能包含

  • 空格(之前或之后)
  • 可能会出现下一行问题

如果使用indexOf()or contains(),它将检查该行是否有字符串 ( rule_write)

确保输入的值while()

于 2013-11-08T08:26:23.580 回答