gpt4 book ai didi

cocoa - 在 cocoa 中使用 nsfilesustem 获取文件属性不存在这样的文件

转载 作者:行者123 更新时间:2023-12-03 17:39:04 24 4
gpt4 key购买 nike

我已经搜索了大约 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) 在大多数情况下,您不必将 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);

关于cocoa - 在 cocoa 中使用 nsfilesustem 获取文件属性不存在这样的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25964473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com