libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSFileManagerとファイル操作 (4/6)

作成:2011-02-21 10:17
更新:2011-11-13 21:44

■ファイルとディレクトリのチェック

ファイルアクセスを行う際、注意しなければならないのは「ファイルのチェック」でしょう。指定したファイルは本当にあるのか。それはフォルダなのかファイルなのか。またそのファイルの内容を読み取ったり保存したりする場合には、そのファイルを操作するためのアクセス権があるかどうかも重要です。

こうした、ファイルに関する情報をチェックするためのメソッドもNSFileManagerには用意されています。ざっと整理しておきましょう。

◯ファイルの存在チェック
BOOL 変数 = [《NSFileManager*》 fileExistsAtPath:《NSString*》];
引数に指定したファイルがあるかどうかを調べます。あればYES、なければNOが返されます。引数には、ファイルのパスを指定しておきます。

◯ディレクトリかどうかもチェック
BOOL 変数 = [《NSFileManager*》 fileExistsAtPath:《NSString*》 isDirectory:
        《BOOL*》];
fileExistsAtPath:には、isDirectory:というキーワードが付いたものも用意されています。これは、「そのファイルがディレクトリ(フォルダ)かどうか」をチェックするためのものです。この引数にBOOL変数のアドレスを渡すことで、それがディレクトリかどうかを示す値が保存されます。

◯アクセス権のチェック
BOOL 変数 = [《NSFileManager*》 isReadableFileAtPath:《NSString*》];
BOOL 変数 = [《NSFileManager*》 isWritableFileAtPath:《NSString*》];
BOOL 変数 = [《NSFileManager*》 isExecutableFileAtPath:《NSString*》];
BOOL 変数 = [《NSFileManager*》 isDeletableFileAtPath:《NSString*》];
ファイルのアクセス権に関するメソッド類です。引数に指定したファイルのアクセス権を調べ、その権限があればYES、なければNOを返します。上から順に「読み取り可能か」「書き出し可能か」「実行可能か」「削除可能か」をチェックするためのものです。

以下に、これらの利用例をあげておきましょう。デスクトップにあるdata.txtというファイルの属性をチェックしています。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSFileManager* manager = [NSFileManager 
                                  defaultManager];
        NSString* path = [NSHomeDirectory()
                          stringByAppendingPathComponent:
                          @"Desktop/data.txt"];
        BOOL isdir;
        NSLog(@"exists:%@",[manager fileExistsAtPath:
                            path isDirectory:&isdir] ? @"YES" : @"NO");
        NSLog(@"isDir:%@",isdir ? @"YES" : @"NO");
        NSLog(@"canRead:%@",[manager isReadableFileAtPath:
                             path] ? @"YES" : @"NO");
        NSLog(@"canSave:%@",[manager isWritableFileAtPath:
                             path] ? @"YES" : @"NO");
        NSLog(@"canExec:%@",[manager isExecutableFileAtPath:
                             path] ? @"YES" : @"NO");
        NSLog(@"canDele:%@",[manager isDeletableFileAtPath:
                             path] ? @"YES" : @"NO");
    }
    return 0;
}
※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る