3

アプリの一時ファイル ディレクトリ内のファイルが変更されたかどうか (いつ変更されたか) を確認しようとしていますが、変更日 (NSFileModificationDateファイル属性内) は常に作成日 ( NSFileCreationDate) と一致しているようです。iOS のファイル システムが変更日を更新しないという漠然とした記憶がありますが、どこにも文書化されていません。

iOSが変更日を更新しないことを誰かが確認できますか(そしておそらくドキュメントを指摘できますか)?

また、内容をハッシュして自分で結果を追跡する以外に、ファイルが変更されたかどうかを判断する他の方法はありますか?

4

1 に答える 1

2

これはまだ機能すると思います。日付が変更された順序でディレクトリの内容を取得から取得:

+ (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;
}
于 2012-05-18T07:15:33.737 に答える