2013-02-15 28 views
6

Tại sao ngày của tệp trong mã sau không bị thay đổi?Tại sao không setLastModified (time) làm việc cho Tệp này?

fLocal.location = file hiện có trong C: \

fLocal.date = Ngày thiết lập tại 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))); 

Output:

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

Mã của bạn có quyền ghi vào tệp không? Tệp có ở trạng thái mở không? – JoshDM

+4

Bạn hiện đang đọc tệp với bất kỳ ứng dụng nào khác tại thời điểm bạn đang thực hiện việc này? Đây là tất cả các mục có thể ngăn bạn thay đổi thời gian của tệp. Tạo một tệp văn bản thuần tuý đơn giản với một dòng văn bản, lưu nó và đóng trình soạn thảo. Sau đó thử sử dụng tập tin đó. Hãy chắc chắn rằng bạn gọi 'exist()' trên đối tượng File của bạn trước khi bạn cố gắng thay đổi nó để đảm bảo bạn thực sự có một tập tin hợp lệ. – JoshDM

+0

Đó là một ý tưởng tồi để làm việc trực tiếp dưới C: \ vì a) trong các Phiên bản Windows gần đây hơn mà bạn không cần phải chạm/thay đổi tệp và thư mục ở đó b) bạn có thể tình cờ ghi đè hoặc xóa tệp OS (như cấu hình khởi động) tập tin). – Ingo

Trả lời

2

Từ ý kiến ​​của tôi từ trước đó, hãy làm theo những kiểm tra:

  1. Mã của bạn có quyền ghi vào tệp không?
  2. Tệp có ở trạng thái mở không?
  3. Bạn hiện đang đọc (hoặc viết!) Tệp với bất kỳ ứng dụng nào khác tại thời điểm bạn đang thực hiện việc này?

Đây là tất cả các mục có thể ngăn bạn thay đổi thời gian của tệp.

Tạo tệp văn bản thuần tuý đơn giản với một dòng văn bản, lưu và đóng trình chỉnh sửa. Sau đó thử sử dụng tập tin đó trong ứng dụng của bạn. Đảm bảo bạn gọi exists() trên FileObject trước khi bạn cố gắng thay đổi thời gian để đảm bảo bạn thực sự có tệp hợp lệ.

2

Tested mã của bạn trên địa phương của tôi và nó hoạt động ... Tôi đã thay đổi ngày sửa đổi của tập tin rất cũ trên hệ thống của tôi ...

-Xem nếu tập tin đang được sử dụng ở một nơi khác ... -Kiểm tra nếu bạn có quyền trên tệp

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))); 
    } 
} 
Các vấn đề liên quan