首页 > 解决方案 > 重新加载文件并保存最后一行位置

问题描述

我想要save当前位置,当我重新加载文件时,它应该从saved单击按钮时的位置开始。

例如:

我已经加载了 10 行的文件,我在第 5 行停止了

我用新的 400 行重新加载了文件,它应该从第 5 行开始读取

我有这样的事情:

public string readfiles(){
  list = File.ReadAllLines(<path>).Distinct.Reverse.ToList();
  number = list.Count -1;
  msg = list[number];
  list.RemoveAt(number);
  return msg;
}

private void button_click(object sender, RoutedEventArgs e){
  response.Text = readfiles();
}

private void reload_click(object sender, ROutedEventArgs e){
  //here should reload file and start with current possition
}

我试过了:

public List<string> list(){
  list = File.ReadAllLines(<path>).Distinct.Reverse.ToList();
  return list;
}

public string readfiles(){
  number = list.Count -1;
  msg = list[number];
  list.RemoveAt(number);
  return msg;
}

private void button_click(object sender, RoutedEventArgs e){
  response.Text = readfiles();
}

private void reload_click(object sender, ROutedEventArgs e){
  list();
}

public List<string> list(){
  list = File.ReadAllLines(<path>).Distinct.Reverse.ToList();
  return list;
}

public int numbers(){
  number = list.Count - 1;
  return number;
}

public string readfiles(){
  number = list.Count -1;
  msg = list[number];
  list.RemoveAt(number);
  return msg;
}

private void button_click(object sender, RoutedEventArgs e){
  response.Text = readfiles();
}

private void reload_click(object sender, ROutedEventArgs e){
  list();
}

标签: c#

解决方案


您不能从特定行开始 ReadAllLines 但您可以跳过不需要的行

foreach(var line in list.Skip(5))
  ...

跳过是一个 LINQ 的东西,所以确保你using System.Linq在文件的顶部有

至于在哪里放置/获取 5,您似乎正在使用 winforms,所以我会使用设置系统。在您的项目中获取属性,然后单击左侧的设置。添加一个名为“FileReadFrom”或类似名称的 USER SCOPED int

现在在代码中,您可以在代码Properties.Settings.Default.FileReadFrom中的任何位置设置/获取,如果您Properties.Settings.Default.Save()在退出应用程序之前记得这样做,它也会记住应用程序重新启动之间的设置


推荐阅读