ディレクトリを反復処理するときにfileAttributesメソッドを呼び出すのはどれくらいの費用がかかりますか?NSDirectoryEnumeratorのfileAttributesメソッドのパフォーマンス特性は何ですか?
特に、列挙されるパスがディレクトリであるかどうか確認したいと思います。 fileAttributes辞書またはファイルマネージャを使用する方が良いですか?我々はすでに列挙されているので、ファイルマネージャを呼び出すことだけでなく、無駄なようだのに対し(下記の例)
NSString *path = "/User/Jack/Documents";
NSDirectoryEnumerator *dirEnum = [filemanager enumeratorAtPath:path];
NSString *file;
BOOL isDir;
while (file = [dirEnum nextObject]) {
NSLog(@"File: %@", file);
NSString * p = [path stringByAppendingPathComponent:file];
BOOL isDir1;
[[NSFileManager defaultManager] fileExistsAtPath:p isDirectory:&isDir1];
BOOL isDir2 = [[dirEnum fileAttributes] objectForKey:@"NSFileType"] == NSFileTypeDirectory;
NSLog(@"isDirectory using fileExistsAtPath:isDirectory: = %d", isDir1);
NSLog(@"isDirectory using FileAttributes = %d", isDir2);
}
fileAttributes
がちょうどisDirectoryに加えて、「不要」な情報のトンを返し、ここではサンプル出力
2011-12-23 16:17:40.523 App[10190:707] File Attributes: {
NSFileCreationDate = "2011-10-23 04:04:51 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 80;
NSFileGroupOwnerAccountName = admin;
NSFileModificationDate = "2011-10-23 04:07:52 +0000";
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = Tony;
NSFilePosixPermissions = 493;
NSFileReferenceCount = 6;
NSFileSize = 204;
NSFileSystemFileNumber = 8381694;
NSFileSystemNumber = 234881029;
NSFileType = NSFileTypeDirectory;
}
です問題のディレクトリ。
洞察?