无法从文本文件中删除行

时间:2019-05-31 17:51:23

标签: c# winforms text file-io

例如,玩家1排在第5位,而下一位玩家2打破了该记录并成为第5位,而玩家1在第6位,则需要从文件中删除第6位的玩家!

我制定了一个动作算法: 读取文件,删除内存中的行,然后将内容返回文件(覆盖)。如果文件很大,您可以阅读该行的内容并创建一个临时文件,稍后再替换原始文件。

此代码中有一个字典-键-播放器的名称,值-时间以秒为单位(越少越好)

所有结果(键和值)都以另一种形式写入文件,并以这种形式被复制到字典中,并通过标签从字典中滚动,作为最终结果,但是我无法从文件中删除播放器谁留下了评分。

我试图通过删除文件,然后仅在没有离开分级的播放器的情况下还原文件来完成此操作

file.Delete(@"C:\\file.txt")

如何在代码中删除此播放器?

private static Dictionary<string, int> AllNames()
    {
        return File
          .ReadLines(@"C:\Users\HP\Desktop\картинки\results.txt")
          .Where(line => !string.IsNullOrWhiteSpace(line))
          .Select(item => item.Split(' '))
          .ToDictionary(items => items[0],
                        items => int.Parse(items[1]));
    }


    private void updateRatingLabels()
    {
        var tops = AllNames()
          .OrderBy(pair => pair.Value)                      
          .ThenBy(pair => pair.Key, StringComparer.Ordinal) 
          .Take(5)                                           
          .ToArray();


        for (int i = 18; i <= 22; ++i)
            Controls.Find($"label{i}", true).First().Text = "";

        for (int i = 28; i <= 32; ++i)
            Controls.Find($"label{i}", true).First().Text = "";


        for (int i = 0; i < tops.Length; ++i)
        {
            Controls.Find($"label{i + 18}", true).First().Text = tops[i].Key;
            Controls.Find($"label{i + 28}", true).First().Text = $"{tops[i].Value / 60}:{tops[i].Value % 60:00}";
        }
    }

0 个答案:

没有答案