http://blog.csdn.net/kesalin/article/details/6749107
NSWorkspace 为应用程序提供如下服务:
1)打开,操作文件/设备,获取文件/设备信息
2)跟踪文件,设备以及数据库的变动
3)设置或获取文件的 Finder 信息
4)启动应用程序。
NSWorkspace 是个 Singleton 类,我们通过 sharedWorkspace 来访问它。比如下面的语句用 TextEdit 打开指定的文件:
[[NSWorkspace sharedWorkspace] openFile:@"/Myfiles/README" withApplication:@"TextEdit"];
下面的代码演示了大部分 workspace 的应用,运行效果图如下:
下面来看代码,代码都很简单的:
[cpp] view plaincopyprint?
- - (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];
- }
时间: 2024-10-09 03:41:26