Cocoaはやっぱり!
Finderでファイルを表示させる
今回のテーマ

例えばファイル検索ソフトやら画像ビューワーなんかで、表示しているファイルをFinderに表示させたいことがあります。そのための方法を説明します。

改版履歴

NSWorkspace selectFile : inFileViewerRootedAtPath :

NSWorkspaceにselectFile : inFileViewerRootedAtPath :という専用のメソッドが用意されています。

NSWorkspace : ファイルをFinderで表示する
書式 : - (BOOL) selectFile : (NSString *) fullPath    inFileViewerRootedAtPath : (NSString *) rootFullPath 入力 : selectFile : Finderに表示させて選択させるファイルのフルパス    : rootFullPath : Finderに表示させるウィンドウのフルパス 出力 : RETURN : YES (=成功)、NO (=失敗)

表示させて選択したいファイルのパスと、ウィンドウのパスを指定します。当然ながらウィンドウのパスはフォルダーやボリュームのパスになります。ただし、selectFileが指定されている場合は、rootFullPathはnilに指定しても構いません。ファイルを含んでいるフォルダーがデフォルト値として使われます。selectFileをnilにしておくと、ウィンドウを開くけれど何も選択しないという状態になります。

ファインダーにファイルを表示
#import <Cocoa/Cocoa.h> int main( int argc, const char *argv[] ) { NSAutoreleasePool *ap = [ [ NSAutoreleasePool alloc ] init ]; BOOL bResult; { ///// SHOW IN FINDER ///// NSString *filePath = [ @"~/Library/Preferences/com.apple.dock.plist" stringByExpandingTildeInPath ]; NSString *windowPath = [ @"~/Library" stringByExpandingTildeInPath ]; bResult = [ [ NSWorkspace sharedWorkspace ] selectFile : filePath inFileViewerRootedAtPath : windowPath ]; NSLog( ( bResult ? @"YES" : @"NO" ) ); } [ ap release ]; return( 0 ); }
サンプルコード ShowInFinder.sit