请考虑以下内容:
using (var fs = new StreamReader(filepath))
{
while (!fs.EndOfStream)
{
string line = fs.ReadLine();
}
}
如果filepath是一个包含很长字符行的文件(换行之间有很多字符),则可能导致服务器在ReadLine()调用之一上耗尽内存。这是潜在的拒绝服务媒介。
是否有任何C#类可以缓解此问题?我正在创建一个新类,该类继承StreamReader并使用StreamReader.ReadBlock()方法读取有限的字符块,但随后我必须处理换行符来解析该块,以便能够从文件中返回行。如果存在的话,我想使用一些Framework类来做同样的事情。
答案 0 :(得分:0)
您可以读取街区,您只能跟踪自己的位置
char[] buffer = new char[24];
while (!r.EndOfStream)
{
bytesRead = r.ReadBlock(buffer, 0, buffer.Length);