如何正确保存文本并将其从文本文件加载到文本框?

时间:2019-07-18 05:48:26

标签: c# winforms

我有这个代码。我想将“个人”的数据保存到文本文件中,同时将其加载到文本框中。当我写第一人称数据时,它可以正确执行。但是,在写入第二人称数据时,它会覆盖第一人称数据。在跳到第二行时,需要您的帮助,在该处写入第二人称数据,然后将其正确加载到txtPersonLoaded文本框。 例如:第一人称是史蒂夫·罗杰斯(Steve Rogers),电话号码为01234,个人ID为456789。结果为:1史蒂夫·罗杰斯01234 456789。 当我尝试添加例如Tony Stark 9876 54321 我得到这个结果:2 Tony Stark 9876 54321 2 Tony Stark 9876 54321 而不是:1史蒂夫·罗杰斯01234 456789。              2托尼·史塔克9876 54321

public void Save()
{
    people.Add(peopleKey, new Person(txtFirstName.Text, txtLastname.Text, txtPhoneNumber.Text, txtPersonalID.Text));
    try
    {
        if (!string.IsNullOrEmpty(txtFirstName.Text) && !string.IsNullOrEmpty(txtLastname.Text) && !string.IsNullOrEmpty(txtPhoneNumber.Text))
        {
            using (var writer = new StreamWriter(new FileStream(filePath, FileMode.OpenOrCreate)))
            {
                foreach (var p in people)
                {

                    writer.Write(peopleKey + " ");
                    writer.Write(txtFirstName.Text + " ");
                    writer.Write(txtLastname.Text + " ");
                    writer.Write(txtPhoneNumber.Text + " ");
                    writer.Write(txtPersonalID.Text + " ");
                }
            };

            using (var reader = new StreamReader(new FileStream(filePath, FileMode.Open)))
            {
                reader.BaseStream.Position = 0;
                txtPersonsLoaded.Text = reader.ReadToEnd();
            }

            string savedText = txtPersonsLoaded.Text;

            txtFirstName.Clear();
            txtLastname.Clear();
            txtPersonalID.Clear();
            txtPhoneNumber.Clear();
        }
    } 
    catch (DirectoryNotFoundException ex) 
    {
        if (MessageBox.Show("Do you want us to create directory for you?", ex.Message, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
        {
            Directory.CreateDirectory(filePath);
            Save();
        }
    }
    peopleKey++;
}

1 个答案:

答案 0 :(得分:0)

我还不能发表评论,所以我将其发布为答案: 您可以看到标记的答案here

new StreamWriter("c:\\file.txt", append: true);

这是另一个很好的解决方案

using (StreamWriter w = File.AppendText("myFile.txt"))
{
  w.WriteLine("hello");
}