2015-11-11 4 views
1

Я пытаюсь узнать, есть ли новые файлы, созданные в данном каталоге. У меня есть следующий код:Обнаружить, если есть новые файлы, созданные в папке с помощью FileWatcher

private static void CreateWatcher() 
    { 
     //Create a new FileSystemWatcher. 
     FileSystemWatcher watcher = new FileSystemWatcher(); 

     //Set the filter to all files. 
     watcher.Filter = "*.*"; 

     //Subscribe to the Created event. 
     watcher.Created += new FileSystemEventHandler(watcher_FileCreated); 

     //Set the path 
     watcher.Path = path; 

     //Enable the FileSystemWatcher events. 
     watcher.EnableRaisingEvents = true; 
    } 

    private static void watcher_FileCreated(object sender, FileSystemEventArgs e) 
    { 
     Console.WriteLine("Nuevo archivo creado -> " + e.Name);   
    } 

    public static void Main(string[] args) 
    { 
     CreateWatcher(); 
     CreateFiles(); 
     Console.Read(); 
    } 

В "CreatedFiles()" функции, я создаю на путь 3 новых файлов (1 на молнии и 2 TXT). Он обнаруживает мне 2 txt-файла, но не то же самое с zip-файлом. Как я могу это решить?

Спасибо!

+1

Я думаю, что, так как 'watcher' является локальным в методе, он получает GCed и прекращает пропагандистские мероприятия. 'Console.Read' также может блокировать' Console.WriteLine'. – vcsjones

+0

он отлично работает на моей стороне. Можете ли вы поделиться кодом CreateFiles? Может быть, вы используете нить или что-то, что не записывает файл? –

+0

Теперь он отображает файл tmp. Почему это так? –

ответ

1

Предлагайте вам посмотреть здесь. Это было рассмотрено ранее.

Using FileSystemWatcher to monitor a directory

+0

Никогда не ставьте только ссылки ... дайте подробный ответ, помните, что ссылка может быть сломана .. – moarra

+0

Если это было рассмотрено ранее, тогда вопрос должен быть помечен как дублированный, а не получать такие ответы. – Alisson