Galera estou querendo saber se existe alguma classe que saiba se um determinado “File” foi modificado.
Olá, acredito que seja assim:
File file = new File("c:\\arquivo.txt");
file.lastModified()
Tenta olhar esse tutorial, pra ver se é o q está querendo:
http://www.mkyong.com/java/how-to-get-the-file-last-modified-date-in-java/
ojnacra não é bem isso que eu quero, queria que quando alguem alterasse ele disparasse para o usuario.
Olá Xore2008,
Eu precisei fazer isso também para uma auditoria em uma pasta aqui na empresa, a forma mais simples que encontrei para mim foi usando C# com FileSystemWatcher. A implemetação foi realmente bastante simples.
Se quiser seguir esse caminho, tem um artigo bem legal aqui: http://csharpbrasil.com.br/monitorando-arquivos-e-diretorios-com-filesystemwatcher/
Em anexo segue o programa em C# que eu fiz, é bem simples pois o propósito era bem específico, mas de repente te ajuda.
MonitorarPasta.exe (16.5 KB)
Obrigado jhonny era exatamente isso que eu queria, pena que é para c# ;/. Vou Continuar a pesquisar para ver se acho para java. Ou entao tentar integrar .
Essa solução verifica um arquivo, para verificar vários arquivos vai ter que adicionar vários watchServices… Mas acho que isso já soluciona teu problema!
Path path = Paths.get("..\\src");
WatchService watchService = null;
try {
watchService = path.getFileSystem().newWatchService();
path.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY);
} catch (IOException e1) {
e1.printStackTrace();
}
//loop infinito
while(true){
WatchKey key = null;
try {
key = watchService.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
// iterate for each event
for(WatchEvent<?> event:key.pollEvents()){
switch(event.kind().name()){
case "ENTRY_MODIFY":
System.out.println("File " + event.context() + " is changed!");
break;
}
}
//Resetar a key é importante para receber as próximas notificações
key.reset();
}
Vamos la
vc tem duas formas de fazer isso, pelo menos
a primeira e dada uma lista de arquivos, vc periodicamente verifica se alguma propriedade mudou desde a ultima verificação.
a segunda é usar o sistema de arquivos do sistema operacional para receber um evento quando o arquivo foi modificado. no linux vc tem a lib inotify que pode fazer isso mas integra-la com Java pode ser interessante ( via JNI, ai vc vai ver o que é bom pra tosse ).
a segunda forma é dependente de muitas coisas. a primeira é generica.
agora lembre-se que em varios sistemas de arquivos, um arquivo pode ser varias coisas como
- um diretorio
- um link para algum outro arquivo
- um dispositivo de bloco
- um named pipe
- um socket
- um arquivo virtual
então esteja atendo.
pode disponibilizar o fonte deste exe?
o passo a passo cria mas é outro.
Queria saber tambem se tem como colocar o usuario que fez a alteração, aqui temos um compartilhamento samba com aut. no AD w2012
To check if File was modified try this,
File fl = new File(“c:\demo.txt”);
fl.lastModified()