場景:用一些軟件把手機上面的文件,如圖片、音樂、視頻、電子書等文件導出到電腦上,文件的創建時間和修改時間是當前系統的時間,與手機不能保持一致。爲了實現與手機文件一致,手動修改導出的文件的創建時間和修改時間。
具體示例:
#import <Foundation/Foundation.h>
NSDate *stringToDate(NSString* timeStr)
{
NSDateFormatter *formatter =[NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date =[formatter dateFromString:timeStr];
[formatter release];
return date;
}
NSString *dateToString(NSDate* date)
{
NSDateFormatter *formatter =[NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *currentTime =[formatter stringFromDate:date];
[formatter release];
return currentTime;
}
void ModifyFileCreateTimeAndModifyTime()
{
NSFileManager *fm =[NSFileManager defaultManager];
NSString *filePath =@"/Users/mac-d1/work/7788/11.vcf";
NSDate *timeDate =stringToDate(@"2015-02-23 12:50:40");
NSDictionary *dic =[[NSDictionary alloc] initWithObjectsAndKeys:timeDate,NSFileCreationDate,timeDate,NSFileModificationDate,nil];
//重新設置文件的創建時間和修改時間
BOOL value= [fm setAttributes:dic ofItemAtPath:filePath error:nil];
if (value)
{
//獲取文件的屬性詞典
NSDictionary *attr =[fm attributesOfItemAtPath:filePath error:nil];
//獲取文件的創建時間
NSDate *createDate = [attr objectForKey:NSFileCreationDate];
//獲取文件的修改時間
NSDate *modifiedDate = [attr objectForKey:NSFileModificationDate];
NSString *createStr =dateToString(createDate);
NSString *modifiedStr =dateToString(modifiedDate);
NSLog(@"create:%@,modify:%@",createStr,modifiedStr);
}
else
{
NSLog(@"修改文件的時間失敗");
}
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
ModifyFileCreateTimeAndModifyTime();
}
return 0;
}
文件沒有修改之前:
文件修改之後: