gpt4 book ai didi

c# - 如何在不读取整个文件的情况下找出文件有多少个字符?

转载 作者:行者123 更新时间:2023-12-04 00:47:24 25 4
gpt4 key购买 nike

如果文件是一个文本文件,并且 StreamReader 可以计算出它使用的 Encoding,我如何在不读取整个文件的情况下找出它有多少字符?

我正在读取 1GB 的 CSV 文件,使用 StreamReader 读取它至少需要 4 秒。 File.ReadAllText().Length 会导致 System.OutOfMemoryException

我想如果我有 FileInfo(filename).LengthEncoding,那么我可以计算出字符数。

最佳答案

你不能。原因是,一些编码(特别是 UTF-8)具有可变字符宽度:一些字符只占用 1 个字节(ASCII),很多占用 2 个字节,甚至有每个字符 3 个或更多字节的情况。因此,如果不对字符进行解码,就无法知道编码下的文件长度。

此外,C# 字符串中的所有字符都表示为 UTF-16,AFAIK,因此除非您有非常奇怪的文本(即您使用了来自外部 plane 0 的许多字符),否则您可以估计内存需求(以字节为单位)相当容易,通过将字符数乘以 2(反之亦然,通过将字节大小加倍来估计字符数)。

现在,一个更好的问题是 - 为什么需要字符数?您稍后要对 CSV 文件做什么,您想要将它全部加载到内存中,为什么知道它的大小会有帮助?

关于c# - 如何在不读取整个文件的情况下找出文件有多少个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102043/

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