我讀了巨大的文本文件,如below.What現在要低於10日線得到的是,如果我達到一個特定的詞說test:
在這裏,我將數據庫從推值該行並從其中一個價值在於通過連接值從10成功line.So我想通過使用File. Readalllines
或任何其他mechanism.How我會達到現在我it.As得到10後續行並將其存儲到內存中將整個文本文件加載到File.Readalllines
,這導致應用程序非常慢。如何從文本文件在C#線
using (FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
string s = String.Empty;
while ((s = sr.ReadLine()) != null)
{
if (s.Contains("test:"))
{
//
}
}
}
編輯 我讀書花錢的答案,在這裏一個扭曲假設我有10000行始於test:
和每一行都有ID
,我基於插入行一個ID,如果存儲在像ID == ID字典,那麼我必須儲存成功的10行,而不是前10行總是,所以如何做?
編輯 @spender我做到了像SkipWhile(line => (!line.Contains("ADD GTRX:") && !line.Contains(dict.CellId.ToString()))).Take(10);
但沒有運氣可言
編輯 @spender最後我做到了我必須移動支架使完整的代碼,我所做的,如下圖所示,我刪除空行也
var linesOfInterest = File.ReadLines(filename)
.SkipWhile(line => !line.Contains("test:")).SkipWhile(line => !line.Contains(dictId.ToString())).Take(10);
var output = string.Join(Environment.NewLine, linesOfInterest).Trim().Split(';').Where(arg => !string.IsNullOrWhiteSpace(arg)).ToArray();
你是偉大的,有一個愉快的一天
for(int i = 0; i <10; i ++)liststring.Add(sr.ReadLine()); ? – owairc
@ user5507337我編輯了我的問題 – peter
嗨,我的想法是一樣的,最新的問題是什麼? – owairc