mac :NSWorkspace

NSWorkspace 为应用程序提供如下服务:

1)打开,操作文件/设备,获取文件/设备信息

2)跟踪文件,设备以及数据库的变动

3)设置或获取文件的 Finder 信息

4)启动应用程序。

NSWorkspace 是个 Singleton 类,我们通过 sharedWorkspace 来访问它。比如下面的语句用 TextEdit 打开指定的文件:

[[NSWorkspace sharedWorkspace] openFile:@"/Myfiles/README" withApplication:@"TextEdit"];

下面的代码演示了大部分 workspace 的应用,运行效果图如下:


mac :NSWorkspace_第1张图片


- (IBAction) launchApplication:(id) sender

{

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

//BOOL wasLaunched = [workspace launchApplication:@"Safari"];

// launch without activation

//

BOOLwasLaunched = [workspace launchAppWithBundleIdentifier: @"com.apple.Safari"

options: NSWorkspaceLaunchWithoutActivation

additionalEventParamDescriptor: NULL

launchIdentifier: nil];

if( wasLaunched )

NSLog (@"Safari was launched");

else

NSLog (@"Safari was not launched");

NSArray * apps = [workspace valueForKeyPath:@"launchedApplications.NSApplicationName"];

self.launchedApplications = [NSString stringWithFormat:@"Launched Applications:\n%@", apps];

NSLog(@"Launched Applications:\n%@", apps);

}

- (IBAction) openPdfByDefault:(id) sender

{

NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";

NSURL    * fileURL = [NSURL fileURLWithPath: path];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace openURL: fileURL];

}

- (IBAction) openPdfBySafari:(id) sender

{

NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";

NSURL    * fileURL = [NSURL fileURLWithPath: path];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace openFile:[fileURL path] withApplication:@"Safari"];

}

- (IBAction) selectFileInFinder:(id) sender

{

NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";

NSURL    * fileURL = [NSURL fileURLWithPath: path];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace selectFile:[fileURL path] inFileViewerRootedAtPath:nil];

}

- (IBAction) gatherFileInfo:(id) sender

{

NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";

NSURL    * fileURL = [NSURL fileURLWithPath: path];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

NSString    * appName;

NSString    * fileType;

[workspace getInfoForFile: [fileURL path]

application: &appName

type: &fileType];

BOOLremovable = NO;

BOOLwriteable = NO;

BOOLunmountable = NO;

NSString *description;

NSString *fileSystemType;

[workspace getFileSystemInfoForPath:[fileURL path]

isRemovable: &removable

isWritable: &writeable

isUnmountable: &unmountable

description: &description

type: &fileSystemType];

self.fileInfo = [NSString stringWithFormat:

@"AppName: %@\ntype: %@"

@"\nremoveable: %d\nwriteable: %d\nunmountable: %d"

@"\ndescription: %@\nfileSystemType: %@",

appName, fileType,

removable, writeable, unmountable,

description, fileSystemType];

NSLog (@" >> gather file info:\n%@", self.fileInfo);

}

- (IBAction) copyFileToDesktop:(id) sender

{

NSString * name  = @"About Xcode and iOS SDK.pdf";

NSArray  * files = [NSArray arrayWithObject: name];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace performFileOperation: NSWorkspaceCopyOperation

source: @"/Developer/"

destination: @"/Users/tianyouhui/Desktop/"

files: files

tag: 0];

}

- (IBAction) moveFileToTrash:(id) sender

{

NSString * name  = @"About Xcode and iOS SDK.pdf";

NSArray  * files = [NSArray arrayWithObject: name];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace performFileOperation: NSWorkspaceRecycleOperation

source: @"/Users/tianyouhui/Desktop/"

destination: @""

files: files

tag: 0];

}

- (IBAction) gatherIconOfFile:(id) sender

{

NSString * path    = @"/Developer/About Xcode and iOS SDK.pdf";

NSURL    * fileURL = [NSURL fileURLWithPath: path];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

self.icon = [workspace iconForFile: [fileURL path]];

//NSString    * path  = [workspace fullPathForApplication:@"Safari"];

//self.xcodeIcon  = [workspace iconForFile: path];

self.xcodeIcon = [workspace iconForFileType:@"xcodeproj"];

}

- (IBAction) openUrlBySafari:(id) sender

{

NSURL * url = [NSURL URLWithString:@"http://blog.csdn.net/kesalin/"];

NSWorkspace * workspace = [NSWorkspace sharedWorkspace];

[workspace openURL: url];

}

你可能感兴趣的:(mac :NSWorkspace)