2013年12月15日日曜日

iOSでファイルの編集日時を変更する

iOSでドキュメントフォルダに保存したファイルの編集日時を作為的に変更してみましょう。
以下のコードはエラー処理を省いていますので、注意して下さい。


// 適当なリソース読み出し
UIImage *image = [UIImage imageNamed:@"Green.png"];
NSData *data = UIImagePNGRepresentation(image);
        
// ドキュメントフォルダにファイルとして書き出す
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:@"savegreen.png"];
[data writeToFile:fullPath atomically:YES];

// 上で保存したファイルのアトリビュート取得
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDictionary *attribute = [fileManager attributesOfItemAtPath:fullPath error:nil];
NSLog(@"attribute = %@",attribute);
        
// 編集日時を今から1日前に変更してみる
// 変更したいアトリビュートをキー:値のペアにして新しい辞書を作る
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-60*60*24];
NSDictionary *changeAttribute = @{NSFileModificationDate: yesterday};
[fileManager setAttributes:changeAttribute ofItemAtPath:fullPath error:nil];

// 確認
attribute = [fileManager attributesOfItemAtPath:fullPath error:nil];
NSLog(@"changed attribute = %@",attribute);

実行結果は以下のようになりました。
アトリビュートを設定し直した後のログで、太字の部分が変更されているのが確認できます。
2013-12-15 16:48:17.168 Test[35203:a0b] attribute = {
    NSFileCreationDate = "2013-12-15 07:48:17 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 20;
    NSFileGroupOwnerAccountName = staff;
    NSFileModificationDate = "2013-12-15 07:48:17 +0000";
    NSFileOwnerAccountID = 501;
    NSFilePosixPermissions = 420;
    NSFileReferenceCount = 1;
    NSFileSize = 1407;
    NSFileSystemFileNumber = 46416116;
    NSFileSystemNumber = 16777218;
    NSFileType = NSFileTypeRegular;
}
2013-12-15 16:48:17.169 Test[35203:a0b] changed attribute = {
    NSFileCreationDate = "2013-12-14 07:48:17 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 20;
    NSFileGroupOwnerAccountName = staff;
    NSFileModificationDate = "2013-12-14 07:48:17 +0000";
    NSFileOwnerAccountID = 501;
    NSFilePosixPermissions = 420;
    NSFileReferenceCount = 1;
    NSFileSize = 1407;
    NSFileSystemFileNumber = 46416116;
    NSFileSystemNumber = 16777218;
    NSFileType = NSFileTypeRegular;
}

関連記事

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...