gpt4 book ai didi

java - 如何将文件传递到 Java Matcher 中?

转载 作者:行者123 更新时间:2023-12-01 20:05:02 25 4
gpt4 key购买 nike

我有一个使用 Java Matcher 的简单方法

public int countWord(String word, File file) throws FileNotFoundException {

String patternString = word;
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(file);

int count = 0;
while (matcher.find()) {
count++;
System.out.println("found: " + count + " : "
+ matcher.start() + " - " + matcher.end());
}
return count;
}

我的想法是将文件传递到指令中:

Matcher matcher = pattern.matcher(file);

但是 Java 会提示它,即使我遵循 IDE 的建议,说要进行这样的强制转换:

java.util.regex.Matcher matcher = pattern.matcher((CharSequence) file);

事实上,当我尝试启动编译时,它会报告以下消息:

Exception in thread "main" java.lang.ClassCastException: java.io.File cannot be cast to java.lang.CharSequence

我怎样才能越过这个障碍?

最佳答案

当然你不能将 File 转换为 CharSequence,它们彼此无关。

方法matcher Pattern 类接受 CharSequence 参数,因此您需要向其传递 CharSequence(很可能是 String)。

您需要读取文件的内容。有很多方法,这完全取决于您是否知道文件是大还是小。如果它很小,那么您可以读取所有行,将它们收集到一个字符串中并将其传递给 matcher 方法。如果它很大,那么你无法一次读取它(你会消耗大量内存),所以你需要分块读取它。

考虑到您需要查看内容并找到特定的模式,这可能很困难 - 假设您的模式比单个 block 长。因此,如果您的文件非常大,我建议更多地考虑正确的方法。

检查此选项以读取文件内容:How do I create a Java string from the contents of a file?

关于java - 如何将文件传递到 Java Matcher 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com