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

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

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

■ファイルパスとNSString

ファイル関係を利用するための機能というのは、実はなかなか大変です。1つのクラスにまとめてあって「これだけ覚えればOK」という具合になっていないのです。ですから、その用途や役割に応じていろいろと覚えないといけないことがあります。

まず、なにより先に理解しておきたいのは「NSStringにあるメソッド」についてでしょう。なんでNSStringがファイルの利用と関係あるんだと思うでしょうが、あるんです。NSStringには、「ファイルパスのテキストを扱うためのメソッド」が用意されており、これによってファイルパスをいろいろと操作できるのですね。

ファイルの操作は、だいたいファイルのパスを指定して行います。ですから、ファイルパスの扱い方がわかっていないとどうしようもありません。Macやiphoneなどの場合、ファイルパスは「/Users/tuyano/Desktop」というように、ルートからファイルやフォルダまでの階層を/記号でつなげた形をしています。この他、ホームディレクトリを「~」で示して、「~/Desktop」というように記述した相対パスなど、いろいろな記述の仕方があります。

そうしたファイルパスのテキストを扱うためにいろいろとメソッドが用意されているのですね。では、重要なものをいくつかピックアップしておきましょう。まず、最初に覚えておきたいのは、NSStringではなく、関数です。
NSString* 変数 = NSHomeDirectory();
この「NSHomeDirectory」という関数は、ホームディレクトリ(通常は、ユーザー名のフォルダ)のパスを返す関数です。多くの場合、プログラム内から利用するファイルはホームディレクトリ内にあるものですから、最初にこの関数でホームディレクトリのパスを取得し、それに操作をして目的のパスを作成していきます。

では、NSStringのメソッドをいくつかあげておきましょう。まず相対パスと絶対パスの変換からです。
NSString *変数 = [《NSString*》 stringByExpandingTildeInPath];
NSString *変数 = [《NSString*》 stringByAbbreviatingWithTildeInPath];
stringByExpandingTildeInPathは、チルダ付きのパス(~/Docmentsなどの形式)をフルパスにしたものを返します。stringByAbbreviatingWithTildeInPathは、逆にフルパスをチルダ付きのパスに変換したものを返します。
NSString *変数 = [《NSString*》 stringByAppendingPathExtension:《NSString*》];
NSString *変数 = [《NSString*》 stringByDeletingPathExtension];
これは、拡張子に関するものです。stringByAppendingPathExtension:はパスの末尾に指定の拡張子を追加し、stringByDeletingPathExtensionはファイルパスから拡張子を取り除きます。

以下に、簡単なパスの取得例をあげておきましょう。NSHomeDirectory関数でホームディレクトリのパスを取得し、その相対パスを出力しています。

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

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

●プログラム・リスト●

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        NSString* path = NSHomeDirectory();
        NSString* shortpath = [path 
                  stringByAbbreviatingWithTildeInPath];
        NSLog(@"%@",path);
        NSLog(@"%@",shortpath);
    }
    return 0;
}

※関連コンテンツ

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