Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSFileManager是否将元数据(如修改日期)与文件一起复制?_Cocoa_Nsfilemanager - Fatal编程技术网

Cocoa NSFileManager是否将元数据(如修改日期)与文件一起复制?

Cocoa NSFileManager是否将元数据(如修改日期)与文件一起复制?,cocoa,nsfilemanager,Cocoa,Nsfilemanager,不推荐使用的方法的文档说明: 文件或目录属性(即所有者和组号、文件权限和修改日期等元数据)也会被复制 或的文件中没有说明这一点。但这些方法也是如此吗?如果我有一个文件foo/bar.txt,修改日期是一小时前,我把它复制到baz/bar.txt,然后我用baz/bar.txt得到修改日期,是现在还是一小时前?我用这个代码测试了这个: NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,

不推荐使用的方法的文档说明:

文件或目录属性(即所有者和组号、文件权限和修改日期等元数据)也会被复制


或的文件中没有说明这一点。但这些方法也是如此吗?如果我有一个文件
foo/bar.txt
,修改日期是一小时前,我把它复制到
baz/bar.txt
,然后我用
baz/bar.txt
得到修改日期,是现在还是一小时前?

我用这个代码测试了这个:

NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    NSString *firstPath = [documentsPath stringByAppendingPathComponent:@"test1.dat"];
    NSData *data = [@"Foobar Test" dataUsingEncoding:NSUTF8StringEncoding];
    [data writeToFile:firstPath atomically:YES];

    NSDate *firstModDate = (NSDate *)[[[NSFileManager defaultManager] attributesOfItemAtPath:firstPath error:nil] objectForKey:NSFileModificationDate];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSString *secondPath = [documentsPath stringByAppendingPathComponent:@"test2.dat"];
        [[NSFileManager defaultManager] copyItemAtPath:firstPath toPath:secondPath error:nil];
        NSDate *secondDate = (NSDate *)[[[NSFileManager defaultManager] attributesOfItemAtPath:secondPath error:nil] objectForKey:NSFileModificationDate];

        NSLog(@"Original date: %.2f", firstModDate.timeIntervalSince1970);
        NSLog(@"New date: %.2f", secondDate.timeIntervalSince1970);
    });
它会记录两次相同的日期。因此,它确实保留了修改日期元数据。使用iOS 13.3进行测试