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

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

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

■パスの構成要素を操作する

続いて、ファイルパスを操作することを考えてみましょう。ファイルパスは、そのファイルやフォルダまでの階層をテキストで示しています。

この階層の値を削除したり追加したりすることで、新しいパスを生成することができます。
NSString *変数 = [《NSString*》 
    stringsByAppendingPaths:
    《NSString*》];
NSString *変数 = [《NSString*》
    stringByDeletingLastPathComponent];

stringsByAppendingPaths:は、引数のテキストをパスに追加します。またstringByDeletingLastPathComponentは、最後のパスの要素を削除したものを返します。パスというのは、1階層ずつ上に移動して、また別の階層に降りていく、という形で移動をしますから、stringByDeletingLastPathComponentで最後から要素を取り除いていき、stringsByAppendingPaths:で新しい階層を追加していけば、どんなパスも生成できます。

下に、いくつかのメソッドを利用した例をあげておきましょう。ざっとこのようにしてファイルパスは操作することができます。

パスのコンポーネントについて

パスは、ルートからの階層をテキストとしてまとめたものです。テキストとしては1つですが、1つ1つの階層のデータが集まったものと考えることもできますね。こうした1つ1つの要素の構成としてパスを扱うこともできます。
NSArray *変数 = [《NSString*》pathComponents];
このpathComponentsは、パスの個々の要素をNSArrayにまとめたものを返すメソッドです。また逆に各要素を配列にまとめたものからパスを生成することもできます。
NSString *変数 = [NSString pathWithComponents:《NSArray*》];
これは引数にパスの構成要素をまとめたNSArrayを渡し、そこからパスのテキストを得ます。これも利用例を下にあげておきます。ホームディレクトリのパスを取得し、これをNSArrayにして出力する例です。――とりあえず、このぐらいのことがわかれば、パスを自由に操作できるようになりますね!

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

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

●プログラム・リスト●

※パスへの要素の追加・削除の例

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* path = NSHomeDirectory();
        path = [path stringByAppendingPathComponent:
                @"Desktop"];
        NSString* fullpath = [path 
                              stringByExpandingTildeInPath];
        NSString* shortpath = [path 
                               stringByAbbreviatingWithTildeInPath];
        NSString* dlpath = [path 
                            stringByDeletingLastPathComponent];
        NSString* newpath = [path 
                             stringByAppendingPathComponent:@"newfile"];
        
        NSLog(@"%@",fullpath);
        NSLog(@"%@",shortpath);
        NSLog(@"%@",dlpath);
        NSLog(@"%@",newpath);
    }
    return 0;
}


※パスの要素を配列で出力する

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* path = NSHomeDirectory();
        NSArray* arr = [path pathComponents];
        NSLog(@"%@",arr);
    }
    return 0;
}
※関連コンテンツ

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