Como verificar arquivos recentes em um diretório usando Thread e a classe File em java

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.

TimerTask

Obrigado. :smiley:

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");
			}
		}

	}
}