java - 检查外部文件是否有某个单词,如果没有,则添加它 Java
问题描述
我正在编写一个类,我必须将单词添加到外部文件中,前提是它们尚未出现在文件中。这是我必须在文件中写出单词的方法的代码,但是当我运行它时,它进入一个循环并且只连续打印一个单词:
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();
}
}
这是我用来测试它的三个数据文件
文件一:我的测试文件一
文件2:我的测试文件二
文件3:我的测试文件三
这是该方法的结果:测试...
它应该有:测试文件三
编辑:我切换了变量 w 和 word,现在输出仍然是一个循环,现在执行它的“测试文件测试文件 ...”
解决方案
问题在于这一行:
printWriter.println(word);
因为您总是打印相同的单词。尝试用变量“w”替换它,它应该可以工作。
推荐阅读
- android - AndroidViewModel 无法创建实例 Kotlin
- ios - 从自定义 swift 文件导入动画功能失败
- google-apps-script - 使用时间戳过滤 gmail
- javascript - 如何在 pino.js 记录器中旋转日志文件
- c# - C# BitConverter.ToInt64 - 目标数组不够长
- ubuntu - 树莓派 4 上 Ubuntu 20.10 上的 .net Core 控制台应用程序在尝试执行程序时给出 No such file or directory
- python - 如果一次又一次使用相同的字典,Python 字典数据不会得到更新
- python - Xbee图像传输python
- c# - 系统间缓存 - 有没有办法在全局变量上获得更改通知?
- c# - C# - Selenium WebDriver 无法获取 Inspect Element 代码