NSFileManagerでファイルの属性を取得する
前回の記事でもちょっと書いたけど、NSFileManagerを使うと、ファイルの属性をNSDictionary形式で取得できる。
iOS Reference Library - NSFileManager Class Reference
ファイルシステムの情報を取得する「attributesOfFileSystemForPath:error:」とファイルやディレクトリの情報を取得する「attributesOfItemAtPath:error:」の2つがあるけど、具体的な内容が分かりづらかったのでまとめ。
attributesOfFileSystemForPath:error:の戻り値
説明 | 型 | 取得例 |
---|---|---|
ファイルシステムの空きノード数 | NSFileSystemFreeNodes | 45625207 |
ファイルシステムの空きサイズ(bytes) | NSFileSystemFreeSize | 186880847872 |
ファイルシステム全体のノード数 | NSFileSystemNodes | 60965666 |
ファイルシステムの管理番号 | NSFileSystemNumber | 234881026 |
ファイルシステム全体のサイズ(bytes) | NSFileSystemSize | 249715376128 |
attributesOfItemAtPath:error:の戻り値
説明 | 型 | 取得例 |
---|---|---|
作成日時 | NSFileCreationDate | "2010-12-30 07:56:22 +0000" |
拡張子を隠しているか | NSFileExtensionHidden | 0 |
所有者のグループID | NSFileGroupOwnerAccountID | 20 |
所有者のグループ名 | NSFileGroupOwnerAccountName | staff |
変更日時 | NSFileModificationDate | "2010-12-30 07:56:22 +0000" |
所有者のID | NSFileOwnerAccountID | 501 |
所有者の名前 | NSFileOwnerAccountName | User Name |
ファイルのアクセス権 | NSFilePosixPermissions | 493 |
参照されている数 | NSFileReferenceCount | 2 |
ファイルサイズ(bytes) | NSFileSize | 68 |
ファイルシステム上のファイル管理番号 | NSFileSystemFileNumber | 3245958 |
ファイルシステムの管理番号 | NSFileSystemNumber | 234881026 |
ファイルタイプ | NSFileType | NSFileTypeDirectory |
サンプルソースコード
ファイルタイプがNSFileTypeRegularだったら、テキストビューに内容を表示してます。
- (void)loadView { [super loadView]; textView = [[UITextView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; /* ファイルの存在確認 */ if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { /* ファイルタイプの取得 */ NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:NULL]; NSString *fileType = [dict objectForKey:NSFileType]; /* NSFileTypeはNSString型なので、isEqualToStringで比較する */ if ([fileType isEqualToString:NSFileTypeRegular]) { // ファイルをNSASCIIStringEncodingでエンコードしてビューに表示 NSString *fileCont = [NSString stringWithContentsOfFile:filePath encoding:NSASCIIStringEncoding error:NULL]; textView.text = fileCont; } else { textView.text = [NSString stringWithFormat:@"読み込みに失敗しました。\n\nファイル %@ のファイルタイプは %@ です。", filePath, fileType]; } } else { textView.text = [NSString stringWithFormat:@"読み込みに失敗しました。\n\nファイル %@ が存在しません", filePath]; } self.view = textView; }