Как добавить только обновленные тексты? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть элемент управления 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 голосов
/ 05 ноября 2018

Если вы хотите, чтобы файл всегда совпадал с тем, что находится в текстовом поле, я бы посоветовал заменить весь блок if (!File.Exists(fileloc)) следующим:

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

Это создаст файл при необходимости, откроет файл, заменит все содержимое на то, что находится в текстовом поле, и закроет файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...