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