簡體   English   中英

如果文件不存在,則在文件中寫入字符串

[英]write string in file if not exist java

我嘗試僅在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寫入文件。 請幫忙,謝謝...

僅檢查文件的一行后,您可能會寫多余的行。

我建議您讀完文件,不要嘗試寫入文件,直到您知道該行確實出現在文件中的任何位置。

即,我將使用PrintWriter.println(),並將所有要寫入的代碼移動到搜索循環之后。

對於不相等的每一行,您(可能)嘗試寫入文件。

您想要的是在所有行都不相等的情況下寫入文件:

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

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

我確定您閱讀的行可能包含

  • 空白(之前或之后)
  • 可能發生下一行問題

如果使用indexOf()contains() ,它將檢查行是否包含字符串( rule_write

確保值進入while()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM