检查外部文件是否有某个单词,以及它是否有';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
。您的逻辑也需要一些调整:在打印一次之前,您需要检查文件中的每个单词。