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

如果不存在java,则在文件中写入字符串,java,file,file-io,Java,File,File Io,我尝试只在字符串不存在时才将字符串写入文件,这是我的代码 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()) {

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

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;
               }
            }
        }
但是,即使字符串已经存在于文件中,程序也会将字符串写入文件。
请帮忙,谢谢

在只检查了文件的一行之后,您可能正在写入额外的一行

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


i、 e.我将使用PrintWriter.println()并在搜索循环后移动所有要写入的代码。

您可以在只检查文件的一行后写入额外的行

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

i、 e.我将使用PrintWriter.println()并将所有要写入的代码移动到搜索循环之后。

使用
indexOf()
contains()
而不是equals()和equalsIgnoreCase()

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

  • 空白(之前或之后)
  • 下一行可能出现问题
如果使用
indexOf()
contains()
,它将检查行中是否有字符串(
rule\u write

确保值输入
while()
使用
indexOf()
contains()
而不是equals()和equalsIgnoreCase()

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

  • 空白(之前或之后)
  • 下一行可能出现问题
如果使用
indexOf()
contains()
,它将检查行中是否有字符串(
rule\u write


确保值在()时输入
while()

对于您(可能)尝试写入文件的每一行

如果所有行不相等,则需要写入文件:

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

对于不相等的每一行,您(可能)尝试写入文件

如果所有行不相等,则需要写入文件:

    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
        ...
    }
nextLine()读取文本行。你是怎么写一行行文字的。换行符是否在字符串本身中?nextLine()读取文本行。你是怎么写一行行文字的。换行符是字符串本身吗?