gpt4 book ai didi

java - 在一个非常大的单行文件中查找字符串

转载 作者:行者123 更新时间:2023-11-29 03:30:02 24 4
gpt4 key购买 nike

我有一个超过 50gb 的文件需要阅读,所有字符都在一行中。

现在是棘手的部分:我必须在所有双引号字符上拆分它,找到一个子字符串 (srsName) 并获取它后面的元素,该元素在拆分子字符串的 for 循环中具有 i+1 索引(“值”)。

问题:是否可以使用一些渐进式搜索实现或其他方法来代替填满我的内存?

为了简化:文件中有很多 srsName 子字符串,但我只需要读取其中一个,因为它们后面的值都相同。

关于文件的一些事情:它是为 xsl 转换准备的 xml。我不能使用创建缩进的 xslt,因为我需要尽可能少地使用磁盘/内存。

这就是值在文件中的呈现方式。

<sometag:sometext srsName="value">

最佳答案

加快在海量文件中搜索的一种方法是采用快速内存​​中搜索算法来搜索文件。

一个特别快的算法是 Knuth–Morris–Pratt :它最多查看每个字符两次,并且需要一个小的预处理步骤来构建“跳转表”,告诉您应该移动到哪个位置以继续搜索。该表的构建方式不会让您跳得太远,因此您可以通过在内存中保留文件的一个小“搜索窗口”来进行搜索:因为您正在寻找只有七个字符的单词,当您在文件中进行搜索时,只在内存中保留最后六个字符就足够了。

关于java - 在一个非常大的单行文件中查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743733/

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