Boa tarde.
estou com um problema!
como faço para usar o método run da Thread, para verificar arquivos alterados recentemente em um diretório.
alguém tem alguma idéia??
Boa tarde.
estou com um problema!
como faço para usar o método run da Thread, para verificar arquivos alterados recentemente em um diretório.
alguém tem alguma idéia??
Como verificar a última vez que um arquivo foi modificado é fácil:
Date modificado = new Date(arquivo.lastModified());
System.out.println("Modoficado em: "+new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(modificado));
… agora você tem que definir o que você entende por “recentemente”,hoje, ontem, semana passada, últimos 5 minutos, etc…
Para deixar uma thread verificando isso de tempo em tempo você tem que procurar estudar java.util.TimerTask
Ok.
já ajudou muito o lastModified();
imagino que seja nos ultimos 5 minutos. :shock:
agora vou pesquisar sobre java.util.TimerTask.
obrigado.
Obrigado.
Pesquise sobre “timer”, pois timertask é a tarefa que roda no timer.
long dataagora = System.currentTimeMillis();
File[] arquivos = docs.listFiles();
while(true){
if(arq.isFile())
if(dataagora<= arq.lastModified()){
visualizar.mostrarArquivo(arq);
}
estava com o mesmo problema neste exercicio…
segue a resolução:
package view;
import java.io.File;
/**
* Thread que verifica se arquivos foram alterados/criados.
*
*/
public class VerificadorNovosArquivos extends Thread {
private File dir;
private VisualizadorArquivos visualizador;
private File[] arquivos;
private long ultVerificacao;
public VerificadorNovosArquivos(File diretorio, VisualizadorArquivos v) {
// TODO 02: Armazenar os parâmetros em atributos para uso posterior
this.dir = diretorio;
this.visualizador = v;
ultVerificacao = System.currentTimeMillis();
}
// TODO 03: Sobrescrever o método run e colocar a lógica para checar
// arquivos.
@Override
public void run() {
while (true) {
arquivos = dir.listFiles();
for (File file : arquivos) {
long ultModificacao = file.lastModified();
if (file.isFile() && ultModificacao > ultVerificacao) {
visualizador.mostrarArquivo(file);
}
}
ultVerificacao = System.currentTimeMillis();
try {
sleep(5000);
} catch (InterruptedException e) {
System.out.println("Thread Interrompida");
}
}
}
}