Tôi đang cố gắng đặt ngày tạo và sửa đổi trên một tệp.Đặt NSFileCreationDate không có hiệu lực
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDate *now = [NSDate date];
NSDictionary *timestampAttr = [NSDictionary dictionaryWithObjectsAndKeys:
now, NSFileCreationDate, now, NSFileModificationDate, nil];
BOOL ret = [fileManager setAttributes:timestampAttr ofItemAtPath:path error:&err];
Ngày sửa đổi được sửa đổi thành công cho tệp. Ngày tạo không thay đổi. Tại sao?
ret
là đúng và err
là không. -attributesOfItemAtPath
trả lại một từ điển chứa cả hai khóa trong timestampAttr
và ngày sửa đổi chính xác (sửa đổi) và ngày tạo không chính xác (chưa được sửa đổi).
Chỉnh sửa: Sử dụng OS X phiên bản 10.6. SDK cơ sở của dự án Xcode là 10.5. Tệp nằm trên ổ cứng duy nhất của máy tính của tôi (không có RAID), trong một thư mục bên trong thư mục chính của tôi. Tệp nằm bên trong gói ứng dụng nếu nó tạo sự khác biệt.
Edit: ví dụ đơn giản này hoạt động:
#import <Cocoa/Cocoa.h>
int main(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSFileManager *m = [NSFileManager defaultManager];
NSString *path = ...;
[m setAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSDate date],NSFileCreationDate,nil] ofItemAtPath:path error:nil];
[pool drain];
return 0;
}
Tôi đã dán mã trên vào ứng dụng ban đầu tôi được hỏi về, thiết lập thuộc tính cho tập tin giống như ví dụ đơn giản (trên máy tính để bàn của tôi). Khi mã nằm bên trong ứng dụng, nó không hoạt động.
Chỉnh sửa: OK, điều này thật điên rồ. Ví dụ đơn giản ở trên đã hoạt động (đồng nghiệp của tôi và cả hai đều thấy nó hoạt động trên máy tính của tôi) nhưng giờ nó không hoạt động.
Cảm ơn. Xem chỉnh sửa của tôi. – jlstrecker