保存和更新存储在文本文件中的列表

时间:2015-12-07 12:35:21

标签: c#

我正在使用存储对象列表的文本文件,我正在尝试创建一个按钮,该按钮将根据用户在表单中输入的内容更新文本文件中的项目。我对当前代码的问题是它覆盖整个文件,只显示列表中的一个项目。

以下是我目前保存到文本的代码,感谢您的帮助。

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        // Save everything in a dialog box
        saveFileDialog1.ShowDialog();
        // Open the file and save the information
        Stream textOut = saveFileDialog1.OpenFile();
        StreamWriter writer = new StreamWriter(textOut);

        FormToObject();
           string str = c.GetToString();
            writer.WriteLine(str);
            writer.Close();

    }

   private void FormToObject()
    {
        c.Brand = txtBrand.Text;
        c.Model = txtModel.Text;
        c.Year = txtYear.Text;
        c.Price = txtPrice.Text;
        c.NumMiles = txtNumMiles.Text;
        BodyCheck();
        GearCheck();
    }

3 个答案:

答案 0 :(得分:0)

您可以在应用初始化时立即加载文件并存储对象列表,例如在App.xaml.cs文件中。创建一个save方法,用于操作内存中的对象列表,并同时将集合保存到文件中。这样,集合的每个版本都会被新集合覆盖。

答案 1 :(得分:0)

Text file是包含顺序数据的文件。您无法跳转到特定记录并更新,您必须创建新文件(或缓冲区)(1)将数据保存到您要更新的记录(2)更新记录,(3)继续文件的其余部分。

看起来,在您的情况下,您正在寻找包含记录的Binary file,并且您每次都可以更新特定记录。

您可以在C#here中阅读有关二进制文件的信息。

答案 2 :(得分:0)

首先,您要将文件中的所有内容保存到列表中。之后你想从文本框中读取所有内容并最终将所有内容写入文本文件,对吗?

这里有一些伪代码:

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    // Save everything in a dialog box
    saveFileDialog1.ShowDialog();
    // Open the file and save the information
    Stream textOut = saveFileDialog1.OpenFile();
    list<string> textfile = texout.ReadLines();
    foreach(item i in itemlist)
    {
        texfile.Add(i);
    }

    StreamWriter writer = new StreamWriter(textOut);
    foreach(string str in texfile)
    {
        writer.WriteLine(str);
    }
    writer.Close();
}