2013-02-15 9 views
6

Dlaczego data pliku w poniższym kodzie nie została zmieniona?Dlaczego plik setLastModified (time) nie działa dla tego pliku?

fLocal.location = istniejącego pliku w C: \

fLocal.date = Data ustawić w 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))); 

wyjściowa:

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

Czy twój kod ma prawo zapisu do pliku? Czy plik jest w stanie otwartym? – JoshDM

+4

Czy aktualnie czytasz plik z inną aplikacją w momencie, gdy to robisz? Są to wszystkie elementy, które mogą uniemożliwić zmianę czasu pliku. Utwórz prosty plik tekstowy za pomocą pojedynczego wiersza tekstu, zapisz go i zamknij edytor. Następnie spróbuj użyć tego pliku. Upewnij się, że wywołujesz 'exist()' w obiekcie pliku, zanim spróbujesz go zmienić, aby upewnić się, że rzeczywiście masz poprawny plik. – JoshDM

+0

To jest kiepski pomysł, aby pracować bezpośrednio pod C: \ ponieważ a) w nowszych wersjach systemu Windows nie powinieneś dotykać/zmieniać plików i katalogów tam b) możesz przypadkowo nadpisać lub usunąć pliki OS (takie jak konfiguracja rozruchu plik). – Ingo

Odpowiedz

2

od moich komentarzy wcześniej, wykonaj poniższe czynności:

  1. Czy twój kod ma prawo zapisu do pliku?
  2. Czy plik jest w stanie otwartym?
  3. Czy aktualnie czytasz (lub piszesz!) Plik z inną aplikacją w momencie, gdy to robisz?

To są wszystkie produkty, które mogą uniemożliwić zmianę czasu pliku.

Utwórz prosty plik tekstowy za pomocą pojedynczego wiersza tekstu, zapisz go i zamknij edytor. Następnie spróbuj użyć tego pliku w swojej aplikacji. Zanim spróbujesz zmienić czas, upewnij się, że dzwonisz pod numer exists() na FileObject, aby upewnić się, że rzeczywiście posiadasz poprawny plik.

2

Testowany kod na mój lokalny i to działa ... Zmieniłem datę modyfikacji bardzo starego pliku w moim systemie ...

-patrz jeśli plik jest używany gdzieś indziej ... -Check jeśli masz uprawnienia do pliku

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))); 
    } 
} 
Powiązane problemy