首先,我不是使用c#最有經驗的人,我迄今爲止唯一做的就是讀取整個文本文件。閱讀文本文件的最後幾行? c#
我想讀一個文本文件的最後幾行,我最終需要爲幾個文本文件做這件事,每個文件的格式都是一樣的,大約有80條奇怪的信息,我'如果可能的話,當'#Footer'這個單詞到達時,我希望讀完這個單詞之後的所有行(大概我會在'#Footer'這個單詞之後保留大約6/7行'頁腳'爲每個文本文件)。
關於如何去做這件事的任何想法?謝謝
首先,我不是使用c#最有經驗的人,我迄今爲止唯一做的就是讀取整個文本文件。閱讀文本文件的最後幾行? c#
我想讀一個文本文件的最後幾行,我最終需要爲幾個文本文件做這件事,每個文件的格式都是一樣的,大約有80條奇怪的信息,我'如果可能的話,當'#Footer'這個單詞到達時,我希望讀完這個單詞之後的所有行(大概我會在'#Footer'這個單詞之後保留大約6/7行'頁腳'爲每個文本文件)。
關於如何去做這件事的任何想法?謝謝
您可以使用File.ReadLines這不需要將整個文件加載到內存。
var lines = File.ReadLines(fname)
.SkipWhile(line => !line.StartsWith("#Footer"))
.Skip(1)
.ToList();
編輯
Console.WriteLine(String.Join(Environment.NewLine, lines));
或'!line.Contains(「#Footer」)' – Kamil
謝謝你,但是在寫完所有內容並運行之後,在命令控制檯中它只是說'按任意鍵繼續...'任何線索,錯了嗎?對不起,我的知識缺乏:L – user2948119
@ user2948119沒有錯,你只是跑你的程序。你用'線路'做什麼?你有沒有試圖展示它? –
private String GetFooter(String filePath)
{
String inputText = "#Footer";
String footerText ="";
String [] allFileLines=(String[])File.ReadLines(filePath).ToArray();
int footerLineNo = -1;
for (int i = 0; i < allFileLines.Length; i++)
{
if (allFileLines[i].Contains(inputText))
footerLineNo = i;
}
if (footerLineNo > -1)
{
for (int i = footerLineNo + 1; i < allFileLines.Length; i++)
footerText += allFileLines[i]+"\n";
}
return footerText;
}
試試這個
bool check= false;
string myline;
string mytext = "";
StreamReader reader = new StreamReader("temp.txt");
while ((myline= reader.ReadLine()) != null)
{
if (myline.Contains("#Footer") || check)
{
check= true;
mytext += line;
}
}
有多大這些文件? – Kamil
如果你想搜索一些文本 - 你必須閱讀整個文件。 – Kamil