【问题标题】:How to add a string to a specific line in a text file using C#如何使用 C# 将字符串添加到文本文件中的特定行
【发布时间】:2018-03-13 20:10:09
【问题描述】:

我需要你的帮助, 我正在尝试将字符串“MyString”添加到文本文件中的特定行,但还不能。 例如 这是我的文本文件的内容:

First Name.
Last Name.
Date of Birth.
Counrty.

现在我正在寻找的是在“出生日期”一词之后的下一行添加“MyString”将是“City”。所以结果可能是这样的:

First Name.
Last Name.
Date of Birth.
City.
Counrty. 

我试过了:

File.AppendAllText(@"C:\\Users\\Volki\\Desktop\\TextFile.txt", 
    string.Format("{0}{1}", "Date of Birth.", "City"));

【问题讨论】:

标签: c#


【解决方案1】:
  • 创建 string[] currFile 并从您的文件中读取到其中(您将获得包含 4 个元素的数组)
  • 创建另一个string[] newFile,但大小为currFile.Length + 1
  • currFile 复制到newFile,但将第四行设置为第五行(在新文件中,前3 行,一个空行,第五行。
  • 将城市存储到newFile的第四行
  • 将其保存到文本文件中

如果我在评论中发错了,我会尽快设置它

编辑:

你可能做的是使用Newtonsoft.Json所以你有课:

public User
{
    public string FirstName;
    public string LastName;
    public DateTime dateOfBirth;
    public string Country;
}

然后你像这样使用它:

public MyClass
{    

    public MyClass()
    {
        User user = new User();
        user.FirstName = "User1";
        ...
        WriteUser(user);

        User user1 = ReadUser();
        string username = user1.FirstName;
    }

    void WriteUser(User user)
    {
        string stringToWriteToFile = JsonConvert.SerializeObject(user);
        //Write this string to file
    }

    User ReadUser()
    {
        string stringFromFile = ...
        return JsonConvert.DeserializeObject<User>(stringFromFile);
    }
}

【讨论】:

  • 你最终会在内存中得到两个完整的文件副本。可以一次只写一行,但即使是文件的一份副本也会更好。
  • 我在编辑后的答案中添加了另一种解决问题的方法。
【解决方案2】:

试试这样的:

string PathFile=@"c:\temp\testxx.TXT";

List<string> Listvalue = File.ReadAllLines(PathFile).ToList();
int IndexSearch = Listvalue.IndexOf("Date of Birth.");

if (IndexSearch>=0)
{
   Listvalue.Insert(IndexSearch+1, "City."); 
   File.WriteAllLines(PathFile, Listvalue.ToArray()); 
}

【讨论】:

  • 如果文件很小,它可能会起作用,但将整个文件加载到内存中并不是一个好主意。
  • 它是一种方法...没有指定限制
  • 但是你可以提出你更好的方法;)
  • 限制是内存!!我做到了,看看我对问题的评论。
  • 大声笑他有一个文件,当然使用数据库是一个更好的主意,但这不是问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-27
  • 2016-09-13
  • 2015-11-06
相关资源
最近更新 更多