gpt4 book ai didi

c# - 索引 XML 文件的问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:21 25 4
gpt4 key购买 nike

我扫描了 2.8GB 的​​ XML 文件以查找特定标签的位置(索引)。我使用 Seek 方法在该文件中设置起点。文件采用 UTF-8 编码。所以索引是这样的:


using(StreamReader sr = new StreamReader(pathToFile)){
long index = 0;
while(!sr.EndOfStream){
string line = sr.ReadLine();
index += (line.Length + 2); //remeber of \r\n chars

if(LineHasTag(line)){
SaveIndex(index-line.Length); //need beginning of the line
}
}
}

所以之后我在另一个文件中有索引位置。但是当我使用 seek 时,它似乎并不好,因为位置设置在它应该的位置之前。我已经将该文件的一些内容加载到 char 数组中,并手动检查了我需要的标签的良好索引。这和我用上面的代码索引的一样。但是 StreamReader.BaseStream 上的 Seek 方法仍然将指针放在文件的前面。很奇怪。

有什么建议吗?

最好的问候,文图斯

最佳答案

以字节为单位寻求交易 - 您假设每个字符有一个字节。在UTF-8中,BMP中的一个字符最多可以占用三个字节。

我的猜测是您的文件中有非 ASCII 字符 - 这些字符将占用超过一个字节。

我认为字节顺序标记可能也存在潜在问题,如果有的话。我不记得 StreamReader 是否会自动吞下它 - 这会让你开始 3 个字节。

关于c# - 索引 XML 文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335154/

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