o sistema operacional pode me dizer quando um novo arquivo é criado?
-
03-07-2019 - |
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
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.
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