Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Este artigo fornece observações 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 nos arquivos e subdiretórios do diretório especificado. Você pode criar um componente para examinar arquivos em um computador local, uma unidade de rede ou um computador remoto.
Para observar as alterações em todos os ficheiros, defina a propriedade Filter como uma cadeia de caracteres vazia ("") ou use coringas ("*.*"). Para observar 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, pode observar mudanças em Attributes, na data e hora LastWrite, ou no Size de ficheiros ou diretórios. Isso é feito definindo a NotifyFilter propriedade para um dos NotifyFilters valores. Para mais informações sobre o tipo de alterações que pode-se acompanhar, consulte NotifyFilters.
Você pode observar a renomeação, exclusão ou 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 especificado para seu parâmetro.
O sistema operativo Windows notifica o seu componente sobre alterações de arquivo em um buffer criado pelo FileSystemWatcher. Se houver muitas alterações num curto espaço de tempo, o buffer pode estourar. Isso faz com que o componente perca o controle das alterações no diretório e ele só fornecerá 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 o disco, portanto, mantenha o buffer 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 filtrar notificações de alteração indesejadas.
Para obter uma lista de valores das propriedades iniciais de uma instância de FileSystemWatcher, consulte o construtor FileSystemWatcher.
Considerações ao usar a FileSystemWatcher classe:
- Os ficheiros ocultos não são ignorados.
- Em alguns sistemas, FileSystemWatcher relata alterações em arquivos usando o formato de nome de arquivo curto 8.3. Por exemplo, uma alteração para "LongFileName.LongExtension" pode ser relatada como "LongFil~.Lon".
- Essa 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. A SecurityException é lançado quando o chamador imediato ou a classe derivada não tem permissão de confiança plena. Para obter detalhes sobre requisitos de segurança, consulte Exigências 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 operativo e o objeto FileSystemWatcher interpretam uma ação de cortar e colar, ou uma ação de mover, como uma ação de renomeação para uma pasta e o seu conteúdo. Se cortar e colar uma pasta com ficheiros para uma pasta que está a ser monitorizada, o objeto FileSystemWatcher reporta apenas a pasta como nova, mas não o seu conteúdo, porque foram essencialmente apenas renomeados.
Para ser notificado de que o conteúdo das pastas foi movido ou copiado para uma pasta monitorada, forneça métodos de rotina de eventos OnChanged e OnRenamed como sugerido na tabela a seguir.
| Manipulador de eventos | Eventos Tratados | Executa |
|---|---|---|
| OnChanged | Changed, Created, Deleted | Relate 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 a seguir:
- Operações comuns do sistema de arquivos podem gerar mais de um evento. Por exemplo, quando um ficheiro é movido de uma pasta para outra, podem ser gerados vários eventos OnChanged e alguns OnCreated e OnDeleted. Mover um arquivo é uma operação complexa que consiste em várias operações simples, portanto, gerando vários eventos. Da mesma forma, alguns aplicativos (por exemplo, software antivírus) podem causar eventos adicionais do sistema de arquivos que são detetados pelo FileSystemWatcher.
- O FileSystemWatcher pode vigiar os discos desde que não sejam trocados ou removidos. O FileSystemWatcher não gera eventos para CDs e DVDs, porque carimbos de data/hora e 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 é 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, porque um nome de arquivo longo contribui para preencher o buffer. Considere renomear esses arquivos usando nomes mais curtos.
- Mantenha o código de manipulação de eventos o mais curto possível.