Conceitos e Propriedades - Monitorando Arquivos e Diretórios com FileSystemWatcher - Parte 1
Neste artigo veremos os conceitos sobre o componente FileSystemWatcher, suas propriedades e eventos
Olá pessoal, neste artigo iremos ver os conceitos, as propriedades e os eventos do componente do .NET Framework FileSystemWatcher, responsável por monitorar arquivos e diretórios. Acompanhem:
O FileSystemWatcher é um componente nativo do .NET Framework que tem como função monitorar diretórios e árvores de diretórios disparando eventos e enviando notificações sobre quaisquer alterações que venham a ocorrer nestes diretórios. Desta forma, quando algum diretório ou subdiretório é criado, alterado, renomeado ou excluído, o FileSystemWatcher acaba funcionando como um “dedo duro” informando ao usuário estas ocorrências. Esse componente pode ser usado para monitorar um ou mais computadores locais, remotos ou em rede.
- As principais propriedades do FileSystemWatcher são:
- EnableRaisingEvents – o diretório só será monitorado se esta propriedade estiver “setada” como true.
- Path – será a pasta que será monitorada pelo nosso componente.
- IncludeSubDirectories – valor booleano, se deixarmos true, ele irá monitorar os subdiretórios.
- Filter – é a extensão do arquivo que nosso componente irá filtrar (.txt por exemplo). Se deixarmos o valor padrão (*.*), ele irá filtrar todos os arquivos.
- NotifyFilter – serão os atributos (ou gatilhos) que, ao serem alterados, farão com que nosso componente dispare um determinado evento que irá notificar o usuário que determinado arquivo ou diretório foi alterado.
- Atributos para os Filtros de Notificação (NotifyFilter):
- Attributes – o atributo do arquivo ou diretório.
- CreationTime – a hora que o arquivo ou diretório foi criado.
- DirectoryName – o nome do diretório.
- FileName – o nome do arquivo.
- LastAccess – a data da última abertura do arquivo ou diretório.
- LastWrite – a data da última escrita no arquivo ou diretório.
- Security – as configurações de segurança do arquivo ou diretório.
- Size – O tamanho do arquivo ou diretório.- Sobrecarga de Métodos:
Temos três sobrecargas da classe do FileSystemWatcher, que são:
1ª - Inicia uma nova instância da classe FileSystemWatcher:
FileSystemWatcher fsw = new FileSystemWatcher();
2ª - Inicia uma nova instância da classe FileSystemWatcher passando como parâmetro a propriedade Path:
FileSystemWatcher fsw = new FileSystemWatcher(@"C:\pasta");
3ª - Inicia uma nova instância da classe FileSystemWatcher passando como parâmetro as propriedades Path e Filter:
FileSystemWatcher fsw = new FileSystemWatcher(@"C:\pasta", "*.*");
- Eventos do FileSystemWatcher:
fsw.Changed += new FileSystemEventHandler(fsw_Changed);
fsw.Created += new FileSystemEventHandler(fsw_Created);
fsw.Deleted += new FileSystemEventHandler(fsw_Deleted);
fsw.Renamed += new RenamedEventHandler(fsw_Renamed);
Estes serão os quatro eventos que usaremos em nosso exemplo.
- Eventos Disparados:
- Changed – disparado sempre que mudanças são feitas no tamanho, atributos, última escrita, último acesso ou permissões de segurança NTFS de um arquivo ou diretório.
- Created – disparado sempre que um diretório é criado.
- Deleted – disparado sempre que um diretório é excluído.
- Renamed – disparado sempre que o nome do diretório ou arquivo é alterado.
- Erro: Estouro de Buffer!
Nosso componente pode receber um grande número de eventos simultâneos, principalmente se o mesmo estiver configurado para rodar em uma rede. Isso pode nos trazer alguns problemas: como o componente usa o Buffer para gerenciar esses eventos, se em um curto período de tempo o Buffer receber muitos eventos, pode ocorrer o erro de Estouro de Buffer, fazendo com que nosso componente perca os dados das alterações realizadas nas pastas e nos envie notificações em branco.
Para que evitemos este erro, podemos usar o método WaitForChangedResult, que espera que um evento específico ocorra para que possa continuar a execução. Podemos definir este evento de acordo com os atributos especificados abaixo:
- All – A criação, exclusão, alteração ou mudança de nome de arquivo ou diretório.
- Changed – A mudança de arquivo ou diretório. Os tipos de mudança incluem: mudança de tamanho, atributos, definição de segurança, última escrita e hora do último acesso.
- Created – A criação de arquivo ou diretório.
- Deleted – A exclusão de arquivo ou diretório.
- Renamed – A mudança de nome de arquivo ou diretório.
Então, se algum destes atributos acima for alterado, é disparado nosso evento.
Na próxima parte iremos criar a aplicação e pôr em prática os conceitos apresentados aqui.
Assim finalizo o artigo. Muito obrigado a todos!
Um abraço, e até o próximo artigo
Wellington Balbo de Camargo
wellingtonbalbo@gmail.comArtigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo