【发布时间】:2019-12-27 10:37:29
【问题描述】:
我有一个包含一系列价格数据的文本文件。 该问题可能与历史数据的任何长期历史记录相匹配,例如温度、空气湿度、价格、日志文件……
如果我想读取和处理一个内存太大的文件,我通常会选择以下代码:
using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string line;
while ((line = sr.ReadLine()) != null)
{
// Process Data
}
}
在我的例子中,每 1000 毫秒创建一条记录。最新数据位于文件末尾。 尝试处理最新数据时会出现此问题。
示例:
我想生成过去 30 天的平均值。
从文件末尾开始并朝着开头移动直到达到 X 天阈值是最有效的。
上面的示例代码将读取在这种情况下几乎无法使用的整个文件。每次我需要更新最近的数据指标时都是最坏的情况。
这个问题当然适用于您要处理最后 x 个元素的任何操作。
是否有从头到尾读取文件的功能?
【问题讨论】:
标签: c# file bigdata streamreader