2013-02-15 14 views
6

Perché la data del file nel seguente codice non è stata modificata?Perché non setLastModified (tempo) funziona per questo file?

fLocal.location = file esistente in C: \

fLocal.date = Data per impostare a Long

boolean x = new File(fLocal.location).setLastModified(Long.parseLong(fLocal.date)); 
System.out.println("Changed: " + x); 
System.out.println(new Date(new File(fLocal.location).lastModified())); 
System.out.println(new Date(Long.parseLong(fLocal.date))); 

uscita:

Changed: false 
Fri Feb 15 23:02:51 CET 2013 
Fri Feb 15 22:49:34 CET 2013 
+3

Il tuo codice ha accesso in scrittura al file? Il file è in stato aperto? – JoshDM

+4

Attualmente stai leggendo il file con qualsiasi altra applicazione nel momento in cui stai facendo questo? Questi sono tutti elementi che potrebbero impedirti di modificare l'ora del file. Crea un semplice file di testo semplice con una singola riga di testo, salvalo e chiudi l'editor. Quindi prova a usare quel file. Assicurati di chiamare 'exists()' sul tuo oggetto file prima di provare a cambiarlo per assicurarti di avere effettivamente un file valido. – JoshDM

+0

È una cattiva idea lavorare direttamente in C: \ perché a) nelle versioni di Windows più recenti non si dovrebbe toccare/cambiare file e directory lì b) si potrebbe accidentalmente sovrascrivere o rimuovere i file OS (come la configurazione di avvio file). – Ingo

risposta

2

Dalle mie osservazioni da parte in precedenza, seguire questi controlli:

  1. Il tuo codice ha accesso in scrittura al file?
  2. Il file è in stato aperto?
  3. Attualmente stai leggendo (o scrivendo!) Il file con qualsiasi altra applicazione nel momento in cui stai facendo questo?

Questi sono tutti elementi che potrebbero impedire di modificare l'ora del file.

Creare un semplice file di testo con una singola riga di testo, salvarlo e chiuderlo fuori dall'editor. Quindi prova a usare quel file nella tua applicazione. Assicurati di chiamare exists() sul tuo FileObject prima di provare a cambiarne il tempo per assicurarti di avere effettivamente un file valido.

2

testato il codice sul mio locale e funziona ... Ho cambiato la data di modifica di molto vecchio file sul mio sistema ...

-See se il file è in uso da qualche altra parte ... -check se hai i permessi sul file

import java.io.File; 
import java.io.IOException; 
import java.util.Date; 

class Test 
{ 
    private class flocalClass 
    { 

     public String date; 
     public String location="c:/Test/cascade.xyz"; 

    } 
    public static void main (String[]args) throws IOException 
    { 
     flocalClass fLocal = new Test().new flocalClass(); 
     fLocal.date = Long.toString(new Date().getTime()); 
     boolean x = new File(fLocal.location).setLastModified(Long.parseLong(fLocal.date)); 
     System.out.println("Changed: " + x); 
     System.out.println(new Date(new File(fLocal.location).lastModified())); 
     System.out.println(new Date(Long.parseLong(fLocal.date))); 
    } 
} 
Problemi correlati