Esses arquivos são relatorios emitidos de 15 em 15 minutos por um outro aplicativo.
[i][b]Problema:
Criar um programa que idexe os arquivos da pasta e retorne o ultimo arquivo escrito. Caso o arquivo tenha um tempo superior a 20 min, eu jogo um popup na tela informando:
“Emissor de relatorios parado”.[/b][/i]
[b]Duvidas:
Como eu posso listar todos os arquivos de um determinado diretorio e progredir a busca?
Como posso disparar esse metodo por tempo? (Ex: Rodar a rototina a cada 2 min)[/b]
ou pensar em um script a ser rodado no cron ou um batch no agendador de tarefas fo win…
O método de File para obter a última alteração é lastModified().
fw
Não precisa ser tão complexo, não terei que fazer busca recursiva.
O unico problema que sobrou é que a pasta não está na maquina e sim em um caminho na rede. Como posso armazenar em uma variavel do tipo File, um caminho de arquivo na dere. Sempre que eu coloco \ no inicio ele enfia o c:\ na frente…
M
marcobiscaro2112
Bem, você terá que mapear a unidade de rede e se referir ao caminho mapeado. Por exemplo, se mapeado em Z:
Que droga o lastModified(), te devolve a data em milisigundos desde de 1970, que feio, tenho que transformar isso em horario, mas sei que no forum tem um artigo sobre isso…
E eu que tava fazendo um monte de calculo pojistico para isso.
Last one:
tenho duas datas, preciso pegar a diferença entre eles em minutos.
Gente, não liga de eu enxer de perguntas não ta. Eu acabo achando depois no google, mas normalmente as soluções postadas aqui são melhores.
No final eu posto o codigo.
gfuranku
Feito!!!
Uhuuu
importjava.io.File;importjava.util.Date;importjavax.swing.JOptionPane;publicclassPrincipal{publicstaticvoidmain(Stringargs[]){Filecaminho=newFile("C:\Program Files\Java\jdk1.6.0_21\bin");Filelista[]=caminho.listFiles();Filelast=newFile("\"); String concat = ""; Date hora; Date agora; int agoraint = 0; int ultimoint = 0; long modificado = 0; int dif = 0; JOptionPane.showMessageDialog(null, caminho); for (int cont = 0; cont < lista.length; cont++){ if(lista[cont].lastModified() > modificado){ modificado = lista[cont].lastModified(); last = lista[cont]; } } concat = last+""; concat = concat.substring(38); hora = new Date(modificado); agora = new Date(); agoraint = agora.getHours() * 60; agoraint += agora.getMinutes(); ultimoint = hora.getHours() * 60; ultimoint += hora.getMinutes(); if(agora.getDay() != hora.getDay()) agoraint = agoraint + (24*60); dif = agoraint - ultimoint; if(dif > 20) JOptionPane.showMessageDialog(null, "EmissordeRelatorioparado!!!!!"); }}
Logica:
transformei os horarios em minutos e verifiquei se a diferença é maior que 20.