我是 Objective-c 的新手,我想获取本地目录的详细信息(如名称、大小、上次修改时间)。是否有任何 API 可以提供帮助?
问问题
203 次
3 回答
5
希望你能在这里找到你的答案:
可以使用 attributesOfItemAtPath方法获取文件或目录的属性。这将目录的路径和一个可选的 NSError 对象作为参数,关于任何错误的信息将被放入其中(如果不需要此信息,可以指定为 NULL)。结果以 NSDictionary 字典对象的形式返回(有关使用字典对象的详细信息,请参阅 Objective-C 字典对象)。
这本词典的一些键:
NSFileType
NSFileTypeDirectory
NSFileTypeBlockSpecial
NSFileTypeUnknown
NSFileSize
NSFileModificationDate
NSFileOwnerAccountName
NSFileGroupOwnerAccountName
NSFilePosixPermissions
NSFileSystemNumber
NSFileCreationDate
NSFileOwnerAccountID
NSFileGroupOwnerAccountID
上述文章中的示例:
(我们可以使用以下代码摘录提取 /tmp 目录的创建日期、文件类型和 POSIX 权限)
NSFileManager *filemgr;
NSDictionary *attribs;
filemgr = [NSFileManager defaultManager];
attribs = [filemgr attributesOfItemAtPath: @"/tmp" error: NULL];
NSLog (@"Created on %@", [attribs objectForKey: NSFileCreationDate]);
NSLog (@"File type %@", [attribs objectForKey: NSFileType]);
NSLog (@"POSIX Permissions %@", [attribs objectForKey: NSFilePosixPermissions]);
于 2012-05-13T07:32:22.127 回答
2
最前沿(2012 年 5 月 13 日)正在使用 CFURL/NSURL 属性:
id outName = nil;
NSString * key = NSURLNameKey;
NSError * outError = nil;
if (YES == [url getResourceValue:&value forKey:key error:&outError]) {
NSString * name = outName;
...
}
注意:确保您只请求您需要的内容,并注意有批量请求方法/功能可以最大限度地减少冗余请求。如果使用 NSURL,你可以使用:
NSArray * keys = ...;
NSError * outError = nil;
NSDictionary * properties = [url resourceValuesForKeys:keys error:&outError];
于 2012-05-13T08:19:10.187 回答
0
您应该查看NSFileManager API。特别是-attributesOfItemAtPath:error:
方法。
于 2012-05-13T07:31:44.020 回答