C# 独立存储—从最后一行到第一行读取文本文件
我试图读取一个txt文件,从最后一行到第一行。实际上是这样的:C# 独立存储—从最后一行到第一行读取文本文件,c#,windows-phone-8,longlistselector,C#,Windows Phone 8,Longlistselector,我试图读取一个txt文件,从最后一行到第一行。实际上是这样的: randomWord1 randomWord2 randomWord3 ... 我需要开始阅读randomWord3,回到randomWord1,将每一行放在我已经测试过的长列表选择器中 我实际上可以通过以下代码从1读到3: while (!reader.EndOfStream){ rigaStorico.Add(new Storico(reader.ReadLine())); } 我怎么能做到完全一样,但从3到1?我想
randomWord1
randomWord2
randomWord3
...
我需要开始阅读randomWord3,回到randomWord1,将每一行放在我已经测试过的长列表选择器中
我实际上可以通过以下代码从1读到3:
while (!reader.EndOfStream){
rigaStorico.Add(new Storico(reader.ReadLine()));
}
我怎么能做到完全一样,但从3到1?我想不出来
p、 当然,行数是未知的可能是一个简单的解决方案-因为您不知道行数,请阅读所有行数,然后添加到LLS:
List<Storico> temp = new List<Storico>();
while (!reader.EndOfStream)
{
temp.Add(new Storico(reader.ReadLine()));
}
for(int n = temp.Count - 1; n >= 0; n--)
rigaStorico.Add(temp[n]);
编辑
尽管此解决方案有效,但它需要一个临时列表-事实上@wiredparie提供了更好的解决方案,可能是一个简单的解决方案-因为您不知道行数,请将它们全部读取,然后添加到LLS:
List<Storico> temp = new List<Storico>();
while (!reader.EndOfStream)
{
temp.Add(new Storico(reader.ReadLine()));
}
for(int n = temp.Count - 1; n >= 0; n--)
rigaStorico.Add(temp[n]);
编辑
尽管此解决方案有效,但它需要一个临时列表-事实上@wiredparie提供了更好的解决方案,类似的解决方案应该适合您
public void ReadBackwards(string fileName)
{
StreamReader fileStream = new StreamReader(fileName);
fileStream.BaseStream.Seek(1024, SeekOrigin.End);
char[] arr = new char[1024];
while (fileStream.BaseStream.Position > 0)
{
arr.Initialize();
fileStream.BaseStream.Seek(1024, SeekOrigin.Current);
int bytesRead = fileStream.Read(arr, 0, 1024);
}
}
//KH.像这样的东西应该适合你
public void ReadBackwards(string fileName)
{
StreamReader fileStream = new StreamReader(fileName);
fileStream.BaseStream.Seek(1024, SeekOrigin.End);
char[] arr = new char[1024];
while (fileStream.BaseStream.Position > 0)
{
arr.Initialize();
fileStream.BaseStream.Seek(1024, SeekOrigin.Current);
int bytesRead = fileStream.Read(arr, 0, 1024);
}
}
//KH.有两个使用内置功能的简单选项: 使用反向:
有两个使用内置功能的简单选项: 使用反向:
这是如何回答这个问题的?您显示的代码既不处理列表,也不处理下线字符。这如何回答问题?您显示的代码既不处理列表,也不处理EOL字符。