BLOG ARTICLE 파일속성 | 1 ARTICLE FOUND

  1. 2008.03.13 파일 목록 및 속성 구하기

Cocoa 파운데이션의 NSFileManager 클래스를 이용하여 특정 패스내의 파일 목록을 검색하고 파일들의 속성을 알아내는 방법입니다. XCode 도움말에서 NSFileManager를 보시면 디렉토리와 파일 관리에 관한 다양한 정보를 확인하실 수 있습니다.

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   
    NSFileManager *fileManager;
    NSDirectoryEnumerator *directoryEnum;
    NSString* str;

    fileManager = [NSFileManager defaultManager];

    directoryEnum = [fileManager enumeratorAtPath:
        [fileManager currentDirectoryPath]];
   
    while ((str = [directoryEnum nextObject]) != nil) {
        NSDictionary *dic = [fileManager fileAttributesAtPath: str
                                                 traverseLink: NO];
       
        NSLog(@"%@: %@, %@byte, %@", str,
              [dic objectForKey: NSFileType],
              [dic objectForKey: NSFileSize],
              [dic objectForKey: NSFileOwnerAccountName]);
    }

    [pool release];

    return 0;
}

위의 소스를 빌드하고 실행하면 결과는 아래와 같습니다.

사용자 삽입 이미지

- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path
path에 지정된 디렉토리내의 모든 서브 디렉토리와 파일목록을 가져 옵니다.

- (NSDictionary *)fileAttributesAtPath:(NSString *)path traverseLink:(BOOL)flag
path에 지정된 파일 또는 디렉토리의 속성을 가지고 옵니다. flag를 YES로 지정하면 심볼릭 링크된 파일의 원본 파일의 정보를 가져오며, NO일 경우에는 링크된 파일의 정보를 가지고 옵니다.

속성은 NSDictionary의 objectForKey를 이용하여 각각의 속성을 가지고 올 수 있습니다. 각 속성에 대한 Key는 NSFileManager.h에 아래와 같이 정의되어 있습니다.

FOUNDATION_EXPORT NSString * const NSFileType;
FOUNDATION_EXPORT NSString * const NSFileTypeDirectory;
FOUNDATION_EXPORT NSString * const NSFileTypeRegular;
FOUNDATION_EXPORT NSString * const NSFileTypeSymbolicLink;
FOUNDATION_EXPORT NSString * const NSFileTypeSocket;
FOUNDATION_EXPORT NSString * const NSFileTypeCharacterSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeBlockSpecial;
FOUNDATION_EXPORT NSString * const NSFileTypeUnknown;
FOUNDATION_EXPORT NSString * const NSFileSize;
FOUNDATION_EXPORT NSString * const NSFileModificationDate;
FOUNDATION_EXPORT NSString * const NSFileReferenceCount;
FOUNDATION_EXPORT NSString * const NSFileDeviceIdentifier;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountName;
FOUNDATION_EXPORT NSString * const NSFilePosixPermissions;
FOUNDATION_EXPORT NSString * const NSFileSystemNumber;
FOUNDATION_EXPORT NSString * const NSFileSystemFileNumber;
FOUNDATION_EXPORT NSString * const NSFileExtensionHidden;
FOUNDATION_EXPORT NSString * const NSFileHFSCreatorCode;
FOUNDATION_EXPORT NSString * const NSFileHFSTypeCode;
#if MAC_OS_X_VERSION_10_2 <= MAC_OS_X_VERSION_MAX_ALLOWED
FOUNDATION_EXPORT NSString * const NSFileImmutable;
FOUNDATION_EXPORT NSString * const NSFileAppendOnly;
FOUNDATION_EXPORT NSString * const NSFileCreationDate;
FOUNDATION_EXPORT NSString * const NSFileOwnerAccountID;
FOUNDATION_EXPORT NSString * const NSFileGroupOwnerAccountID;
#endif
#if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED
FOUNDATION_EXPORT NSString * const NSFileBusy;
#endif

AND