在可可中使用 nsfilesustem 获取文件属性不存在此类文件
Posted
技术标签:
【中文标题】在可可中使用 nsfilesustem 获取文件属性不存在此类文件【英文标题】:get file attributes with nsfilesustem in cocoa no such file exists 【发布时间】:2014-09-21 22:20:12 【问题描述】:我已经搜索了大约 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 的第二个语句。
我已检查我的文件是否已经存在。
请帮忙??我错过了什么?
【问题讨论】:
【参考方案1】:几个问题:
1) 在大多数情况下,您不必将NSURL
转换为路径字符串即可对文件进行操作。特别是可以使用NSURL
的“资源值”API直接获取创建时间:
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);
【讨论】:
谢谢,几分钟前我已经建立了相同的第二部分答案。我要试试1st。在第三部分,错误日志只是用来知道我在开发时遇到的错误。非常感谢以上是关于在可可中使用 nsfilesustem 获取文件属性不存在此类文件的主要内容,如果未能解决你的问题,请参考以下文章