1

我是 Objective-c 的新手,我想获取本地目录的详细信息(如名称、大小、上次修改时间)。是否有任何 API 可以提供帮助?

4

3 回答 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 回答