我尝试只在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。 请帮忙,谢谢...
答案 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()