You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Scanner判断文件中是否存在指定字符串并返回布尔值

简化文件内特定字符串的查找实现

你的代码逻辑没问题,但可以更简洁,同时优化资源管理避免泄漏,优化后的写法如下:

public boolean findString(File f, String s) throws FileNotFoundException {
    try (Scanner scan = new Scanner(f)) {
        return scan.findWithinHorizon(s, 0) != null;
    }
}

优化说明

  • 省去冗余的if-else判断,直接返回表达式结果,代码更紧凑清晰。
  • 使用try-with-resources语法创建Scanner,代码执行完毕后会自动关闭资源,无需手动调用close(),避免文件句柄泄漏。
  • findWithinHorizon(s, 0)的第二个参数传0,会扫描整个文件内容直到找到匹配的字符串,完全满足你的查找需求。

额外注意

如果目标字符串包含正则特殊字符(如.、*、+等),需要先对字符串转义,避免匹配逻辑出错,修改后的代码如下:

import java.util.regex.Pattern;

public boolean findString(File f, String s) throws FileNotFoundException {
    try (Scanner scan = new Scanner(f)) {
        return scan.findWithinHorizon(Pattern.quote(s), 0) != null;
    }
}

内容的提问来源于stack exchange,提问作者gooooodmorning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:27:35