Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存和更新存储在文本文件中的列表_C# - Fatal编程技术网

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

C# 保存和更新存储在文本文件中的列表,c#,C#,我正在使用一个存储对象列表的文本文件,并尝试创建一个按钮,该按钮将根据用户在表单中输入的内容更新文本文件中的项目。当前代码的问题是它覆盖了整个文件,并且只显示列表中的一项 下面是我当前保存到文本的代码,谢谢你的帮助 private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) { // Save everything in a dialog box saveFileDialog

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

下面是我当前保存到文本的代码,谢谢你的帮助

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();
    }

您可以在应用程序初始化后加载文件并存储对象列表,例如在app.xaml.cs文件中。创建一个save方法,该方法操作内存中的对象列表,同时将集合持久化为文件。这样,集合的每个版本都会被新集合覆盖

您可以在应用程序初始化后加载文件并存储对象列表,例如在app.xaml.cs文件中。创建一个save方法,该方法操作内存中的对象列表,同时将集合持久化为文件。这样,集合的每个版本都会被新集合覆盖

文本文件
是包含顺序数据的文件。您不能跳转到特定记录并进行更新,您必须创建新文件(或缓冲区)(1)保存数据直到您要更新的记录(2)更新记录,以及(3)继续文件的其余部分

看起来,在您的例子中,您正在查找包含记录的
二进制文件
,并且每次都可以更新特定的记录


您可以阅读C#中的二进制文件。

文本文件
是包含顺序数据的文件。您不能跳转到特定记录并进行更新,您必须创建新文件(或缓冲区)(1)保存数据直到您要更新的记录(2)更新记录,以及(3)继续文件的其余部分

看起来,在您的例子中,您正在查找包含记录的
二进制文件
,并且每次都可以更新特定的记录


您可以阅读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();
    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();
}
private void saveAstolStripMenuItem\u单击(对象发送方,事件参数e)
{
//在对话框中保存所有内容
saveFileDialog1.ShowDialog();
//打开文件并保存信息
Stream textOut=saveFileDialog1.OpenFile();
list textfile=texout.ReadLines();
foreach(项目列表中的项目i)
{
添加(i);
}
StreamWriter writer=新的StreamWriter(文本输出);
foreach(texfile中的字符串str)
{
作者:WriteLine(str);
}
writer.Close();
}

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

下面是一些用于此的伪代码:

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();
}
private void saveAstolStripMenuItem\u单击(对象发送方,事件参数e)
{
//在对话框中保存所有内容
saveFileDialog1.ShowDialog();
//打开文件并保存信息
Stream textOut=saveFileDialog1.OpenFile();
list textfile=texout.ReadLines();
foreach(项目列表中的项目i)
{
添加(i);
}
StreamWriter writer=新的StreamWriter(文本输出);
foreach(texfile中的字符串str)
{
作者:WriteLine(str);
}
writer.Close();
}