Pergunta

Eu quero saber quando um novo arquivo é criado em um diretório específico, em vez de varrer o diretório de tempos em tempos.

Eu entendo que há uma maneira de tornar o sistema operacional dizer ao meu programa que um novo arquivo foi criado. Como isso funciona?

Como se observa, isso tem semelhanças com Como ser notificado de arquivo / mudança de diretório em C / C ++, o ideal é usar POSIX

Foi útil?

Solução

Depende de qual sistema operacional.

No Windows, a API de base seria Change Directory notificações .

Uma vez que você menciona Linux nas tags, esta seria a inotify API .

Para adicionar a resposta OS X, a partir de 10,5, você quer o FSEvents API .

Outras dicas

No Linux, veja Inotify .

Como ser notificado da mudança arquivo / diretório em C / C ++, o ideal é usar POSIX

ou procurar inotify em stackoverflow você vai ter um monte de idéias

FAM fornece uma interface de observação de arquivo consistente em todos os UNIXes. No Linux, o daemon back-end pode ser substituído por Gamin , mas um programa ligado com FAM irá trabalhar com Gamin muito bem. (Nos bastidores, FAM pode estar usando votação, e Gamin pode estar usando inotify ou dnotify ou kqueue, mas você não precisa se preocupar com a implementação.)

OS X.5 tem FSEvents , que é muito diferente na medida em que monitora todo o sistema, em vez de arquivos e diretórios especificados, mas também satisfazer as suas necessidades.

No Windows, consulte Localizar (Primeira | Seguinte | Close) ChangeNotification ou ReadDirectoryChanges .

FileSystemWatcher é a resposta -. E funciona de forma recursiva

Há um exemplo aqui (procurar FileSystemWatcher)

Com o Mac OS X, esta funcionalidade faz parte da API Spotlight.

Usando Net no Windows (não tenho certeza sobre Linux / mono) você pode usar um FileSsytemWatcher prestar atenção para novos arquivos e eventos levantam quando eles são criados.

De MSDN:

Use FileSystemWatcher para assistir muda em um diretório especificado. Vocês pode observar alterações em arquivos e subdirectórios do especificado diretório. Você pode criar um componente para assistir arquivos em um computador local, um unidade de rede ou um computador remoto.

MSDN Página

A API do Windows fornece instalações para o monitoramento do sistema de arquivos - há um exemplo aqui http://msdn.microsoft.com/en-us/library/aa365261%28VS.85%29.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top