0

我已经搜索了大约 3 个小时的如何获取文件的创建日期,我得到带有枚举器的 URL,然后我将它传递给更正百分比的路径,最后我尝试获取文件属性......所以,无论如何我都不会改变路径,但我总是得到同样的错误“操作无法完成。没有这样的文件或目录”,以及路径“file:///Users/raul/Desktop/DSC_0386. JPG”。

代码示例:

NSError* error = nil;
//NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:[[url absoluteString] stringByRemovingPercentEncoding] error:&error];
NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:@"file://Users/raul/Desktop/DSC_0386.JPG" error:&error];
NSLog(@"%@",error);
NSDate *fecha = [fileAttribs objectForKey:NSFileCreationDate];

我已经评论了第一个 NSDictionary 以直接尝试使用 nsstring 的第二个语句。

我检查了我的文件是否已经存在。

请问,有什么帮助吗??我错过了什么?

4

1 回答 1

2

几个问题:

1) 在大多数情况下,您不必将 an 转换NSURL为路径字符串即可对文件进行操作。具体来说,您可以使用“资源价值”APINSURL直接获取创建时间:

NSDate* creationDate;
NSError* error;
if ([url getResourceValue:&creationDate forKey:NSURLCreationDateKey error:&error])
    /* use creationDate */;
else
    /* handle error */;

2)如果您确实需要从 获取路径字符串NSURL,请不要使用-absoluteString. 这仍然是一个 URL 字符串,带有“file://”等内容。URL 字符串不是有效的路径字符串。您在问题中引用的错误消息已经告诉您这一点。它向您显示了“file:///Users/raul/Desktop/DSC_0386.JPG”的文件“路径”,但这根本不是路径。

您应该只使用该-path方法。当您获得-path.

3) 你应该忽略任何错误输出参数,直到你检查了你调用的方法是成功还是失败,通常是通过检查它的返回值。也就是说,您发布的代码应该像这样重新组织:

NSError* error = nil;
NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:@"file://Users/raul/Desktop/DSC_0386.JPG" error:&error];
if (fileAttribs)
{
    NSDate *fecha = [fileAttribs objectForKey:NSFileCreationDate];
    // ... use fecha ...
}
else
    NSLog(@"%@",error);
于 2014-09-21T23:28:29.463 回答