如何通过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
相关产品推荐
相关产品推荐

