Tenho uma string contendo uma data no formato “dd/MM/yy HH:mm:ss”. estou fazendo :
...StringDATA_ARQUIVO="09/10/07 17:11:46";DateFormatdf=newSimpleDateFormat("dd/MM/yy HH:mm:ss");longultimaModificacaoFile=df.parse(DATA_ARQUIVO).getTime();FileARQUIVO_CORRENTE=newFile(meufile.txt);if(ARQUIVO_CORRENTE.exists()){if(ARQUIVO_CORRENTE.setLastModified(ultimaModificacaoFile)){}else{System.out.println("Não foi possível mudar a data de modificação.");}}else{System.out.println("Arquivo não existe.");}...
O código compila e executa direitinho mas sempre exibe a mensagem “Não foi possível mudar a data de modificação.” . Alguém pode dar um força com essa questão de mudar a data de modificação do arquivo ? Estou desenvolvendo a aplicação para rodar em windows xp. Agradeço qualquer ajuda.já pesquisei mas num encontrei muito a respeito aqui no forum e na API.
Na linha 08: File ARQUIVO_CORRENTE = new File(meufile.txt);
Esse arquivo você tem colocar o caminho real. pois talvez ele não esteja pegando corretamente.
[]'s
T
thingol
Hum - 09/10/07 é entendido pelo Java como 09/10/2007 ou 09/10/0007?
Se for a última alternativa, o Windows não irá aceitar a alteração da data, porque não havia computadores disponíveis no ano 7 da era cristã. (Nessa época Jesus tinha 12 anos e estava estudando, ou dando aulas, para os doutores da Lei, se não me engano. Mas não sou teólogo nem arqueólogo. Mas acho que não havia arquivos naquela época.)
Experimente imprimir o ano (com 4 dígitos) para ver o que o Java entendeu.
rafaengenharia
Tentei as duas sugestões anteriores e nenhuma deu certo. Botei o caminho absoluto na hora de instanciar um novo objeto da classe File e também tentei o ano com 4 digitos como abaixo mas não funcionou:
Continua dando o não foi possível efetuar a modificação.
rafaengenharia
Tem um detalhe que talvez tenha algo a ver.estou baixando os arquivos via ftp, utilizando a api org.apache.commons.net.ftp.FTPClient, e estou tentando mudar a data de modificação dos arquivos logos apos baixa-los assim:
...Stringy="13/10/2007 17:20:21";DateFormatdf=newSimpleDateFormat("dd/MM/yyyy HH:mm:ss");longultimaModificacaoDateFile=df.parse(y).getTime();FileOutputStreamARQUIVO_CORRENTE_REMOTO=newFileOutputStream(ARQUIVO[1]);if(ftp.retrieveFile(ARQUIVO[1],ARQUIVO_CORRENTE_REMOTO)){FileARQUIVO_CORRENTE=newFile(ARQUIVO[1]);if(ARQUIVO_CORRENTE.exists()){//checa se o arquivo já existe no diretório corrente localif(ARQUIVO_CORRENTE.setLastModified(ultimaModificacaoDateFile)){}else{System.out.println("Não foi possível mudar a data de modificação.");}}else{System.out.println("Arquivo não existe.");}System.out.println(ARQUIVO[1]+"Baixado com sucesso. - "+ARQUIVO_CORRENTE.getName());}else{System.out.println("Não foi possível baixar o arquivo"+ARQUIVO[1]);}}}}...
Sendo que a parte do código referente a conexão ftp download tah funcionando direitinho, só o lastModified que
num tah rolando mesmo.
T
thingol
Uai, eu rodei este programa e funcionou direitinho. Acho que está ocorrendo o seguinte: o arquivo que você baixou não foi fechado por algum motivo, portanto setLastModified não conseguiu alterar a data do arquivo.
Resolvi, o problema era que realmente os arquivos ainda não estavam fechados logo após baixá-los,no código anterior que havia postado só adicionei:
...if(ftp.retrieveFile(ARQUIVO[1],ARQUIVO_CORRENTE_REMOTO)){ARQUIVO_CORRENTE_REMOTO.close();//ISSO ERA O QUE FALTAVA...
e tudo funcionou bonito !!
att,
T
thingol
Como eu sempre falo:
Escove os dentes antes de dormir, não largue toalhas molhadas em cima da cama, feche a tampa do vaso depois de usá-lo, devolva sempre os livros da biblioteca depois de lê-los, não jogue lixo no chão, e feche os arquivos depois de abri-los.