如何仅附加更新后的文本?

时间:2018-11-05 16:16:16

标签: c# winforms file streamwriter

我有一个Winform控件来编写笔记,笔记的内容会定期上传到服务器。 我需要创建一个本地文件作为备份来保存注释的内容。 当我在记事本中键入文本时,内容保留在记事本中并保存到本地文本文件中。但是,当我在笔记框中输入更多文本时,以前的内容以及新的内容都会附加到本地文件中。 如何确保仅将最新内容附加到本地文件?如果我清除便笺盒中的内容,则不会有任何内容登录到服务器。

 private void btnNote_Click(object sender, EventArgs e)
        {

            Note noteFrm = new Note();

            //set Note Text
            noteFrm.NoteText = _timeCard.NoteText;

            if (noteFrm.ShowDialog() == DialogResult.OK)
            {
                //Save notes locally as well
                string path = @"C:\QB Notes\";
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string projname = this._timeCard.Project.ProjectName.TrimEnd()+".txt";
                string fileloc = path + projname;

                // FileStream fs = null;
                 if (!File.Exists(fileloc))
                 {      
                     using (TextWriter txt = new StreamWriter(fileloc))
                     {
                        // TextWriter txt = new StreamWriter(fileloc);
                         txt.Write(noteFrm.NoteText + Environment.NewLine);
                        txt.Close();
                     }
                 }
                 else if (File.Exists(fileloc))
                 {
                     using (var txt = new StreamWriter(fileloc, true))
                     {
                        txt.BaseStream.Seek(0, SeekOrigin.End);
                        txt.Write(noteFrm.NoteText + Environment.NewLine);                  
                         txt.Close();
                     }
                 }
                //noteFrm.NoteText="";
                //get Note Text
                _timeCard.NoteText = noteFrm.NoteText;
                Utils.LogManager.write("New Note Text: " + noteFrm.NoteText);
            }

        }

1 个答案:

答案 0 :(得分:1)

如果您希望文件始终与文本框中的内容匹配,那么建议您将整个if (!File.Exists(fileloc))块替换为:

File.WriteAllText(fileloc, noteFrm.NoteText + Environment.NewLine);

这将在需要时创建文件,打开文件,将所有内容替换为文本框中的内容,然后关闭文件。