【问题标题】:Removing specific line from text file using Unity3D based on System.IO and c# [closed]使用基于 System.IO 和 c# 的 Unity3D 从文本文件中删除特定行 [关闭]
【发布时间】:2020-06-26 06:40:09
【问题描述】:

您好, 我目前在使用 System.IO 文本文件时遇到了一些问题。 目前我正在尝试删除文本文件中的一行,但我不知道该怎么做。

例如:-

[1]26/6/2020 2:30:02 PM|5MB|那个文件~

[2]26/6/2020 2:30:10 PM|5MB|那个文件~

[3]26/6/2020 2:30:41 PM|5MB|那个文件~

[4]26/6/2020 2:33:22 PM|5MB|那个文件~

【问题讨论】:

  • 您已经尝试过自己做些什么来完成这项工作。请包括您在尝试此操作时遇到的具体问题,而不仅仅是询问“我如何做 x”stackoverflow.com/help/how-to-ask。你做过研究吗?看了这个问题及其答案,例如stackoverflow.com/questions/668907/…
  • 很抱歉,感谢您指出我需要去的方向。
  • 您使用什么标准来确定要删除哪一行?您是否使用括号 [] 内的(大概)行号?
  • 提示:您不能从文件中“删除”一行。您必须修改内存中的整个文件,然后将其写回磁盘,或创建一个新文件。这就是为什么您永远不会看到简单地从文件中删除一行的示例代码。
  • 您的问题是否真的是在询问是否可能对文件进行更改?这绝对是可能的!大量应用程序依赖于对文件进行更改。

标签: c# unity3d system.io.file


【解决方案1】:

删除某个索引处的行:

List linesList = File.ReadAllLines("myFile.txt").ToList();            
linesList.RemoveAt(1);
File.WriteAllLines("myFile.txt"), linesList.ToArray());

删除具有特定值的行:

public void DeleteLinesFromFile(string strLineToDelete)
    {
        string strFilePath = "Path to the file";
        string strSearchText = strLineToDelete;
        string strOldText;
        string n = "";
        StreamReader sr = File.OpenText(strFilePath);
        while ((strOldText = sr.ReadLine()) != null)
        {
            if (!strOldText.Contains(strSearchText))
            {
                n += strOldText + Environment.NewLine;
            }
        }
        sr.Close();
        File.WriteAllText(strFilePath, n);
    }

【讨论】:

  • @CaptainKenpachi 你不需要删除旧文件......只需覆盖现有文件
猜你喜欢
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
相关资源
最近更新 更多