我正在尝试确定我的应用程序临时文件目录中的文件是否(以及何时)被修改,但修改日期(NSFileModificationDate
在文件属性中)似乎总是与创建日期匹配(NSFileCreationDate
)。我有一些模糊的回忆,iOS 中的文件系统不会更新修改日期,但我没有发现任何地方都有记录。
任何人都可以确认(并且可能指向文档)iOS 不会更新修改日期吗?
此外,是否有其他方法可以确定文件是否已更改,而不是散列内容并自己跟踪结果?
我正在尝试确定我的应用程序临时文件目录中的文件是否(以及何时)被修改,但修改日期(NSFileModificationDate
在文件属性中)似乎总是与创建日期匹配(NSFileCreationDate
)。我有一些模糊的回忆,iOS 中的文件系统不会更新修改日期,但我没有发现任何地方都有记录。
任何人都可以确认(并且可能指向文档)iOS 不会更新修改日期吗?
此外,是否有其他方法可以确定文件是否已更改,而不是散列内容并自己跟踪结果?
我认为这仍然有效。取自按日期修改顺序获取目录内容:
+ (NSDate*) getModificationDateForFileAtPath:(NSString*)path {
struct tm* date; // create a time structure
struct stat attrib; // create a file attribute structure
stat([path UTF8String], &attrib); // get the attributes of afile.txt
date = gmtime(&(attrib.st_mtime)); // Get the last modified time and put it into the time structure
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setSecond: date->tm_sec];
[comps setMinute: date->tm_min];
[comps setHour: date->tm_hour];
[comps setDay: date->tm_mday];
[comps setMonth: date->tm_mon + 1];
[comps setYear: date->tm_year + 1900];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *modificationDate = [[cal dateFromComponents:comps] addTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMT]];
[comps release];
return modificationDate;
}