Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece comentários complementares à documentação de referência para esta API.
Use FileSystemWatcher para observar as alterações em um diretório especificado. Você pode observar as alterações em arquivos e subdiretórios do diretório especificado. Você pode criar um componente para observar arquivos em um computador local, uma unidade de rede ou um computador remoto.
Para observar as alterações em todos os arquivos, defina a Filter propriedade como uma cadeia de caracteres vazia ("") ou use curingas ("*.*"). Para assistir a um arquivo específico, defina a Filter propriedade como o nome do arquivo. Por exemplo, para observar as alterações no arquivo MyDoc.txt, defina a Filter propriedade como "MyDoc.txt". Você também pode observar as alterações em um determinado tipo de arquivo. Por exemplo, para observar as alterações nos arquivos de texto, defina a Filter propriedade como "*.txt".
Há vários tipos de alterações que você pode observar em um diretório ou arquivo. Por exemplo, você pode observar as alterações na AttributesLastWrite data e hora ou nos Size arquivos ou diretórios. Isso é feito definindo a NotifyFilter propriedade como um dos NotifyFilters valores. Para obter mais informações sobre o tipo de alterações que você pode acompanhar, consulte NotifyFilters.
Você pode observar a renomeação, a exclusão ou a criação de arquivos ou diretórios. Por exemplo, para observar a renomeação de arquivos de texto, defina a Filter propriedade como "*.txt" e chame o WaitForChanged método com um Renamed parâmetro especificado.
O sistema operacional Windows notifica seu componente sobre alterações de arquivos em um buffer criado pelo FileSystemWatcher. Se houver muitas alterações em um curto espaço de tempo, o buffer poderá estourar. Isso faz com que o componente perca o controle das alterações no diretório e fornecerá apenas uma notificação geral. Aumentar o tamanho do buffer com a InternalBufferSize propriedade é caro, pois ele vem de memória não paginada que não pode ser trocada para disco, portanto, mantenha o buffer tão pequeno, mas grande o suficiente para não perder nenhum evento de alteração de arquivo. Para evitar um estouro de buffer, use as propriedades NotifyFilter e IncludeSubdirectories para que você possa filtrar notificações de alteração indesejadas.
Para obter uma lista de valores de propriedade iniciais de uma instância de FileSystemWatcher, consulte o construtor FileSystemWatcher.
Considerações ao usar a FileSystemWatcher classe:
- Os arquivos ocultos não são ignorados.
- Em alguns sistemas, FileSystemWatcher reporta alterações em arquivos usando o curto formato de nome de arquivo 8.3. Por exemplo, uma alteração em "LongFileName.LongExtension" poderia ser relatada como "LongFil~.Lon".
- Esta classe contém uma demanda de link e uma demanda de herança no nível de classe que se aplica a todos os membros. Um SecurityException é lançado quando o chamador imediato ou a classe derivada não tem permissão de confiança total. Para obter detalhes sobre demandas de segurança, veja Demandas de Link.
- O tamanho máximo que você pode definir para a InternalBufferSize propriedade para monitorar um diretório pela rede é de 64 KB.
Copiar e mover pastas
O sistema operacional e o objeto FileSystemWatcher interpretam uma ação de cortar e colar ou de movimentação como uma ação de renomeação para uma pasta e seu conteúdo. Se você recortar e colar uma pasta com arquivos em uma pasta que está sendo observada, o FileSystemWatcher objeto relatará apenas a pasta como nova, mas não seu conteúdo porque eles são essencialmente apenas renomeados.
Para ser notificado de que o conteúdo das pastas foi movido ou copiado para uma pasta assistida, forneça os métodos de manipulador de eventos OnChanged e OnRenamed, conforme sugerido na tabela a seguir.
| Manipulador de Eventos | Eventos tratados | É executado |
|---|---|---|
| OnChanged | Changed Created Deleted | Relatar alterações em atributos de arquivo, arquivos criados e arquivos excluídos. |
| OnRenamed | Renamed | Liste os caminhos antigos e novos de arquivos e pastas renomeados, expandindo recursivamente, se necessário. |
Eventos e tamanhos de buffer
Observe que vários fatores podem afetar quais eventos de alteração do sistema de arquivos são gerados, conforme descrito pelo seguinte:
- Operações comuns do sistema de arquivos podem gerar mais de um evento. Por exemplo, quando um arquivo é movido de um diretório para outro, vários OnChanged e alguns OnCreated e OnDeleted eventos podem ser gerados. Mover um arquivo é uma operação complexa que consiste em várias operações simples, gerando, portanto, vários eventos. Da mesma forma, alguns aplicativos (por exemplo, software antivírus) podem causar eventos adicionais do sistema de arquivos detectados por FileSystemWatcher.
- O FileSystemWatcher pode observar os discos, desde que eles não sejam trocados ou removidos. O FileSystemWatcher não gera eventos para CDs e DVDs, pois os carimbos de data/hora e as propriedades não podem ser alterados. Os computadores remotos devem ter uma das plataformas necessárias instaladas para que o componente funcione corretamente.
Observe que um FileSystemWatcher pode perder um evento quando o tamanho do buffer for excedido. Para evitar eventos ausentes, siga estas diretrizes:
- Aumente o tamanho do buffer definindo a InternalBufferSize propriedade.
- Evite observar arquivos com nomes de arquivo longos, pois um nome de arquivo longo contribui para preencher o buffer. Considere renomear esses arquivos usando nomes mais curtos.
- Mantenha o código de tratamento de eventos o mais curto possível.