私は Objective-c を初めて使用します。ローカル ディレクトリの詳細情報 (名前、サイズ、最終変更時刻など) を取得したいと考えています。役立つAPIはありますか?
3 に答える
ここで答えが見つかることを願っています:
ファイルまたはディレクトリの属性は、 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 年 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];
NSFileManager APIを調べる必要があります。特に-attributesOfItemAtPath:error:
方法。