Обновить список, когда данные добавляются в файл? - PullRequest
0 голосов
/ 26 января 2012

Вот что я делаю: Я записываю сообщения и дату в текстовый файл, который я успешно выполнил. Теперь я хочу добавить то же самое в Listview (или любой другой элемент управления, который можно использовать для достижения этой цели), также как и когда файл обновляется, Listview должен быть обновлен.

Я новичок в c #, так что извините за недостаток знаний.

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Вы можете использовать FileSystemWatcher

Создать экземпляр FileSystemWatcher:

FileSystemWatcher watcher= new FileSystemWatcher();

watcher.Path = @"c:\folder_that_contains_log_file";

Установить фильтр уведомлений: какие события следует наблюдать

watcher.NotifyFilter= NotifyFilters.LastWrite | NotifyFilters.FileName;

Укажите, что FileWatcher можетподнять события:

watcher.EnableRaisingEvents = true;

Добавить обработчик события для события изменения для всех файлов из этой папки:

watcher.Changed += new FileSystemEventHandler(Changed);

Захват события изменения:

private void Changed(object sender, FileSystemEventArgs e)
{

// Get the ful path of the file that changed and rised this change event   

string fileThatChanged = e.FullPath.ToString();

//Check if file that changed is your log file

 if (fileThatChangedPath.equals("path_tot_the_log_file"))           
 {

   // clear items from ListView

   // Read from file line by line

   // Add each line to the ListView

 }

}
1 голос
/ 26 января 2012

Я предполагаю, что вы сохраните изменения, внесенные в ваш код

тогда вам нужно будет посмотреть, когда изменения произойдут с файлом

FileSystemWatcher watch;
public Load()
        {            
            watch = new FileSystemWatcher();
            watch.Path = @"C:\tmp";

            watch.NotifyFilter = NotifyFilters.LastWrite;

            // Only watch text files.
            watch.Filter = "*.txt";

            watch.Changed += new FileSystemEventHandler(OnChanged);

            watch.EnableRaisingEvents = true;            
        }

        private static void OnChanged(object source, FileSystemEventArgs e)
        {
            // Specify what is done when a file is changed, created, or deleted.
            if (e.FullPath == @"C:\tmp\link.txt")
                MessageBox.Show("File: " + e.FullPath + " " + e.ChangeType);            
        }

когда происходят изменения, вам нужно будет получить изменения самостоятельно
и добавьте его в нужный элемент управления

например, вы можете получить содержимое файла перед его изменением и сохранить его затем получите его после изменения и сравните его

надеюсь, я помог

...