gpt4 book ai didi

c# - 为什么 ReadToEnd 会抛出 OutOfMemory 异常而 ReadAllText 不会?

转载 作者:太空狗 更新时间:2023-10-29 22:54:45 25 4
gpt4 key购买 nike

我在尝试读取 ASP.net 网站中的 16MB 文本文件时遇到 ReadToEnd 抛出 OutOfMemory 异常的问题。

在调查原因时,我遇到了 File.ReadAllText 这正是我正在做的事情,我不关心我是如何获得文本的。

但是查看 ReadAllText 的文档它没有提到 OutOfMemory 异常的可能性。这是为什么?它的实现方式是否与 ReadToEnd 不同,从而不太可能耗尽内存,或者如果它耗尽内存会抛出一些其他异常?

编辑 添加代码只是为了展示我目前正在做的事情:

StreamReader inputFile = System.IO.File.OpenText(filename);
string cacheData = inputFile.ReadToEnd();
inputFile.Close();

有时我会在第 2 行遇到 OutOfMemory 异常。没有进行解析,文件只有 16M 的文本,据我所知没有什么奇怪的。

重新启动 IIS 通常会修复它。但是当我收到错误消息时,我有 2G 的可用 RAM,IIS 可能达到了一些内部限制? w3wp.exe进程通常使用350-500M(这是Windows Server 2003上的IIS 6)

最佳答案

来自 Reflector,System.IO.File 类:

public static string ReadAllText(string path, Encoding encoding)
{
using (StreamReader reader = new StreamReader(path, encoding))
{
return reader.ReadToEnd();
}
}

就是这样。

关于c# - 为什么 ReadToEnd 会抛出 OutOfMemory 异常而 ReadAllText 不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379459/

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