at_yasu's blog

ロード的なことを

NSString でファイル名取得

IconsWindow


忘れない様にメモ。Cocoa では、NSString でファイルの拡張子などを見る事が出来ます。

こんな感じです。

NSString* path = @"/path/to/file.txt";

// ファイルの拡張子を取得
[path pathExtension];     // txt

// ファイル名の取得
[path lastPathComponent]; // file.txt


以下、リファレンスの Working with paths 部分だけを取り出し、自分に必要な部分だけ意訳した物。ぐでぐでで読みにくいのは許してください。

+ pathWithComponents:

引数の配列をパスセパレータでつなぎ、新しいNSString型を生成します。

Returns a string built from the strings in a given array by concatenating them with a path separator between each pair.

+ (NSString *)pathWithComponents:(NSArray *)components

Parameters (引数)

components
配列のそれぞれの要素がNSString型であり、ファイルパスとなっている。絶対パスの場合、配列の先頭要素は "/" にしてください。生成の最中に通り越しを防ぐため、配列の最後尾の要素は空文字にする様にしてください。

Return Value (返り値)
引数 components の順番に表されたどおりに、/ で結合した文字列を生成します。


Discussion (議論)
この method は新しいパスを生成します。引数を空にして[#//apple_ref/occ/instm/NSString/stringByStandardizingPath:title=stringByStandardizingPath]を使うと、親ディレクトリを返すようにします。


Availability (動作)

Mac OS X v10.0 以降


See Also (参考)

- pathComponents

– pathComponents

パスのレシーバ*1をNSString型のオブジェクトにし、それぞれを要素に持つ配列を返します。

Returns an array of NSString objects containing, in order, each path component of the receiver.

- (NSArray *)pathComponents


Return Value (返り値)

パスのレシーバそれぞれをNSString型にし、それぞれを要素に持つ配列を返します。


Discussion (議論)

配列内にある文字列は、レシーバそれぞれを表しています。文字列で始まる時や/で終わる時は、最初もしくは最後の要素であり、それぞれ / があるでしょう。配列が空の場合、削除されてます。例としてのソースコードです。

NSString *path = @"tmp/scratch";

NSArray *pathComponents = [path pathComponents];

配列はそれぞれの要素を持ちます。

Index Path Component
0 "tmp"
1 "scratch"

"/tmp/scratch"などといった場合、

Index Path Component
0 "/"
1 "tmp"
2 "scratch"

/ が全くない場合、例えば"scratch"だと、配列の要素は"scratch"だけとなります。

この Method はファイルパスでしか動作しません。URLなどでは動きません。


Availability (動作)

Mac OS X v10.0 以降


See Also (参考)

+ pathWithComponents:
- stringByStandardizingPath
- componentsSeparatedByString:

– completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:
– fileSystemRepresentation
– getFileSystemRepresentation:maxLength:
– isAbsolutePath

絶対パスかどうかを真偽値で返します。

- (BOOL) isAbsolutePath


Return Value (返り値)

YESの場合、絶対パスです。それ以外はNOを返します


Discusstion (議論)

パスの情報はString Programming Guide For Cocoaでより多く読めます。

注意:この Method はファイルパスでしか動作しません。URLなどでは動作しません。そして、ファイルパスにあるファイルが存在するかどうかの確認はしません。存在するかどうかの確認はNSFileManager クラスの fileExistsAtPathで確認できます。


Availability (参考)

Mac OS X v10.0以降で使用できます。

– lastPathComponent
– pathExtension
– stringByAbbreviatingWithTildeInPath
– stringByAppendingPathComponent:
– stringByAppendingPathExtension:
– stringByDeletingLastPathComponent
– stringByDeletingPathExtension
– stringByExpandingTildeInPath
– stringByResolvingSymlinksInPath
– stringByStandardizingPath
– stringsByAppendingPaths:

*1:ファイル名やディレクトリ名の事