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;
}