检查外部文件是否有某个单词,以及它是否有';t然后将其添加到Java中

检查外部文件是否有某个单词,以及它是否有';t然后将其添加到Java中,java,string,file,io,file-writing,Java,String,File,Io,File Writing,我正在编写一个类,在这个类中,我必须将单词添加到外部文件中,前提是这些单词尚未出现在文件中。 下面是我必须写出文件中单词的方法代码,但当我运行它时,它循环运行,只连续打印一个单词: public static void toDataFile(String word, String filename) { try { File file = new File(filename); Scanner sc2 = new

我正在编写一个类,在这个类中,我必须将单词添加到外部文件中,前提是这些单词尚未出现在文件中。 下面是我必须写出文件中单词的方法代码,但当我运行它时,它循环运行,只连续打印一个单词:

public static void toDataFile(String word, String filename)
    {   
        try {
            File file = new File(filename);   
            Scanner sc2 = new Scanner(file);      
    
            while (sc2.hasNextLine())          
            {
                String w = sc2.nextLine();
                
                if(!(word.equals(w)))
                {
                    FileWriter myWriter = new FileWriter(filename, true);
                    PrintWriter printWriter = new PrintWriter(myWriter);
                
                    printWriter.println(word);
                    printWriter.close();
                }
            } 
        }
        catch(IOException e) {
            e.printStackTrace();
        }
}
下面是我用来测试它的三个数据文件

文件1: 我的测试文件一

文件2: 我的测试文件二

文件3: 我的测试文件三

这是该方法的结果: 测试

它应该有: 测试 文件 三


编辑:我切换了变量w和word,现在输出仍然是一个循环,现在执行它的“test file test file…”

问题在于这一行:

printWriter.println(word);

因为你总是打印同一个单词。尝试用变量“w”替换它,它应该可以工作。

if(!w.equals(word))
替换
if(!w.equals(word))
=
(和
!=
)比较引用,而不是
字符串的值。它仍然不起作用,给我一个单词循环。请用单词共享您的文件。您正在打印
word
,但应该打印
w
。您的逻辑也需要一些调整:在打印一次之前,您需要检查文件中的每个单词。