如果不存在java,则在文件中写入字符串

时间:2013-11-08 08:16:43

标签: java file file-io

我尝试只在String不存在时才将String写入文件,这是我的代码

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

但是,程序保持将String写入文件,即使文件中已经存在String。 请帮忙,谢谢...

3 个答案:

答案 0 :(得分:4)

在检查文件的一行后,您可能正在编写额外的行。

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

即。我会使用PrintWriter.println(),我会在搜索循环后移动所有代码进行写入。

答案 1 :(得分: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
        ...
    }

答案 2 :(得分:0)

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

我确信您阅读的内容可能包含

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

如果您使用indexOf()contains(),则会检查该行是否包含字符串(rule_write

确保值在while()