NSWorkspace 为应用程序提供如下服务:
1)打开,操作文件/设备,获取文件/设备信息
2)跟踪文件,设备以及数据库的变动
3)设置或获取文件的 Finder 信息
4)启动应用程序。
NSWorkspace 是个 Singleton 类,我们通过 sharedWorkspace 来访问它。比如下面的语句用 TextEdit 打开指定的文件:
[[NSWorkspace sharedWorkspace] openFile:@"/Myfiles/README" withApplication:@"TextEdit"];
下面的代码演示了大部分 workspace 的应用,运行效果图如下:
下面来看代码,代码都很简单的:
- (IBAction) launchApplication:(id) sender { NSWorkspace * workspace = [NSWorkspace sharedWorkspace]; //BOOL wasLaunched = [workspace launchApplication:@"Safari"]; // launch without activation // BOOL wasLaunched = [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]; BOOL removable = NO; BOOL writeable = NO; BOOL unmountable = 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]; }