C # Вывести текст в файл на новой строке - PullRequest
0 голосов
/ 20 мая 2011

У меня есть некоторый код, который выводит данные из класса FileSystemWatcher, хотя каждый раз для вывода строки в test.txt, он перезаписывает предыдущую запись, есть ли способ остановить это?

Код ввопрос:

static void FileWatcher_Created(object sender, FileSystemEventArgs e)
{

    using (StreamWriter fileWriter = new StreamWriter("test3.txt"))
    {
        var data = true;
        fileWriter.Write("C:\\" + e.Name + Environment.NewLine);
    }

Полный код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace FileWatcherr
{
class Program
{    
    static void Main(string[] args)
    {
        string dirPath = "C:\\";
        FileSystemWatcher fileWatcher = new FileSystemWatcher(dirPath); 
        fileWatcher.IncludeSubdirectories = true;  
        fileWatcher.Filter = "*.exe";    
        // fileWatcher.Filter = "C:\\$Recycle.Bin";   
        //  fileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);   
        fileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created);    
        //  fileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);  
        //  fileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);    
        fileWatcher.EnableRaisingEvents = true;      

        // updated code


        Console.ReadKey(); 
    }



        static void FileWatcher_Renamed(object sender, RenamedEventArgs e)
        {
            Console.WriteLine(e.OldName + " was renamed to " + e.Name);
        }

        static void FileWatcher_Deleted(object sender, FileSystemEventArgs e)

        {
            Console.WriteLine(e.Name + " was deleted");
        }

        static void FileWatcher_Created(object sender, FileSystemEventArgs e)
        {

            using (StreamWriter fileWriter = new StreamWriter("test3.txt"))
            {
                var data = true;
                fileWriter.Write("C:\\" + e.Name + Environment.NewLine);
            }

        }

        static void FileWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            Console.WriteLine(e.Name + "");
        }
    }
}

Ответы [ 5 ]

3 голосов
/ 20 мая 2011

Измените свой код, чтобы быть ниже. Второй параметр StreamWriter - это если мы должны добавить или перезаписать. Установите в true, чтобы добавить, и в false, чтобы перезаписать (по умолчанию, таким образом, ваша проблема)

   using (StreamWriter fileWriter = new StreamWriter("test3.txt", true))
    {
        var data = true;
        fileWriter.WriteLine(Path.Combine("C:\\", e.Name));
    }

Более подробную информацию об этом конструкторе можно найти здесь http://msdn.microsoft.com/en-us/library/36b035cb.aspx

0 голосов
/ 20 мая 2011

Класс StreamWriter имеет конструктор перегрузки, который принимает второй параметр bool, который указывает, хотите ли вы добавить к существующему файлу. Больше информации здесь.

0 голосов
/ 20 мая 2011

Заменить

new StreamWriter("test3.txt")

на

new StreamWriter("test3.txt", true)

Это добавит поток к файлу.

0 голосов
/ 20 мая 2011

Попробуйте

using (StreamWriter fileWriter = new StreamWriter("test3.txt", true))
{
...
}
0 голосов
/ 20 мая 2011

Рассмотрим открытие файла для добавления:

    using (StreamWriter fileWriter = new StreamWriter("test3.txt", true))
    {
        var data = true;
        fileWriter.WriteLine("C:\\" + e.Name);
    }

Обратите внимание, что лучше использовать WriteLine метод.

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