gpt4 book ai didi

java - 使用 Java 扫描器读取文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:07:39 26 4
gpt4 key购买 nike

我试图理解的 java 文件中的一行如下所示。

return new Scanner(file).useDelimiter("\\Z").next();

根据 java.util.regex.Pattern 文档,该文件预计会返回到“输入的末尾,但对于最终终止符,如果有的话”。但实际情况是它只返回文件的前 1024 个字符。这是正则表达式模式匹配器强加的限制吗?这可以克服吗?目前我正在使用文件阅读器。但我想知道这种行为的原因。

最佳答案

我自己,我无法重现这个。但我想我可以阐明正在发生的事情。

在内部,扫描仪使用 1024 个字符的字符缓冲区。默认情况下,扫描器将从您的可读 1024 个字符中读取,如果可能,然后应用该模式。

问题出在你的模式中……它总是匹配输入的结尾,但这并不意味着你的输入流/数据的结尾。当 Java 将您的模式应用于缓冲数据时,它会尝试找到输入结束的第一次出现。由于缓冲区中有 1024 个字符,因此匹配引擎将位置 1024 称为定界符的第一个匹配项,并将其之前的所有内容作为第一个标记返回。

出于这个原因,我认为输入结束 anchor 不适用于扫描器。毕竟,它可能是从无限流中读取的。

关于java - 使用 Java 扫描器读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857584/

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