Objective-C 파일 다루기

  1. 파일 시스템을 다루는 클래스 : NSFileManager
    1. 객체를 얻는 방법 : +(NSFileManager *)defaultManager;
    2. 멀티 쓰레드 환경에서는 alloc/init을 사용한다.
    3. NSFileManager에서 자주 쓰이는 메소드
      1. 파일 존재 확인 : -(BOOL)fileExistsAtPath:(NSString *)path;
      2. 파일 복사, 이동, 삭제
        1. 파일 복사 : -(BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
        2. 파일 삭제 : -(BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
        3. 파일 이동은 파일 복사 후에 source 파일을 삭제한다.
      3. 파일 권한 확인
        1. 읽기 전용 : -(BOOL)isReadableFileAtPath:(NSString *)path;
        2. 쓰기 전용 : -(BOOL)isWritableFileAtPath:(NSString *)path;
      4. 디렉토리 내용 확인 : (NSArray *)contentsOfDirectoryAtPath(NSString *)path error:(NSError **) error;
    4. 문자열을 파일로 저장
      1. NSString 클래스의 -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error; 메소드로 문자열을 파일로 저장
      2. 위의 코드를 실행하면 아래와 같이 해당 경로에 파일이 생성되고, 파일에 문자열이 저장된 것을 확인할 수 있다.
    5. 파일 에러 처리
      1. 파일 시스템의 동작 수행 중에 오류 발생하면 에러 객체 전달
      2. 에러 파라미터 : NSError ** 로 정의
      3. 사용법 : 포인터의 주소를 넘긴다.(&사용)
        파일 동작 에러 처리
        __autoreleasing NSError *error = nil;
        ...
        BOOL ret = [fm removeItemAtPath:path error:&error];
        if(!ret) {
            NSLog(@"에러 : %@", [error locaizedDescription]);
        }
      4. 에러 처리 시에는 주의할 점은 에러는 더블 포인터로 정의되어 있어 "&" 를 이용한 주소 값으로 넘겨준다.
      5. 아래와 같이 파일이 없는데 삭제 요청을 하는 경우
      6. 아래와 같이 에러 메시지를 출력한다.
  2. NSError : 에러 정보를 표시한다.
    1. 에러에 대한 정보 표시 메소드
      1. -(NSString *)localizedDescription;
      2. -(NSString *)localizedFailureReason;