NSFileManager ファイルに関する操作
iOS, Mac OS X でファイルにまつわる操作を行う場合は, NSFileManager クラスを利用します。
これを利用するには, まずは NSFileManagerを取得します。
NSFileManager *fm = [NSFileManager defaultManager];
これでインスタンスが取得できます。これ以後は, このfmを使って様々な操作を行うわけです。
ファイル, もしくはディレクトリが存在しているかどうか(fileExistsAtPath)
fileExistsAtPath を使います。
[fm fileExistsAtPath:path]; // YES, NO
pathには, ファイルのパスNSString *を渡します。存在していれば, YES, なければ NOを返します。
パスがディレクトリかどうかを調べる(fileExistsAtPath)
先ほどの, fileExistsAtPathの応用ですね。
BOOL dir; if ( [fm fileExistsAtPath:path isDirectory:&dir] ) { if ( dir ) { // path is directory. } }
オプション isDirectoryを使います。結果が, dirに入っているので, それを調べます。
ディレクトリ内のファイル一覧(再帰なし)(contentsOfDirectoryAtPath)
ディレクトリ内のファイルおよびディレクトリの一覧を取得します。
階層は1つのみディレクトリの場合中身は調べません。contentsOfDirectoryAtPath
[fm contentsOfDirectoryAtPath:dst error:nil]
NSArray * を返します。(各項目はNSString *)です。
for ( NSString *path in [fm contentsOfDirectoryAtPath:dst error:nil] ) { // Process }
ディレクトリ内のファイル一覧(再帰あり)
再帰を使って, ディレクトリ内のファイル, ディレクトリ内のファイルと
ツリー内をすべて調べます。>
+(NSArray *)getFilesInDirectory:(NSString *)path { NSMutableArray *array = [NSMutableArray array]; NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:path]; NSString *name; while ( name = [dirEnum nextObject] ) { NSString *fullPath = [path stringByAppendingPathComponent:name]; // Full Path [array addObject:fullPath]; } return array; }
ディレクトリの作成(createDirectoryAtPath)
[fm createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
withIntermediateDirectories は, 階層があった場合に上位ディレクトリがない場合自動作成するかどうか BOOL,
attributesは, ファイルの属性です。
ファイル,ディレクトリの削除(removeItemAtPath)
[fm removeItemAtPath:path error:nil];