将应用程序的内容复制到桌面编程式
问题描述:
我是Objective-C的新手。将应用程序的内容复制到桌面编程式
如何将我的整个.app
包([[NSBundle mainBundle] bundleURL]
)以编程方式复制到我的桌面?
这是我的代码,但没有帮助我。
NSString *sourcepath = [[NSBundle mainBundle] bundlePath];
NSString *destpath = [NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"];
[[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:destpath error:nil];
答
您可以使用标准的NSFileManager
方法
复制目录以及文件。从Apple的文档:
复制项目时,当前进程必须有权读取srcPath中的文件或目录并写入dstPath的父目录。如果srcPath中的项目是一个目录,则此方法将复制该目录及其所有内容,包括任何隐藏文件。
如果已经存在或者复制将失败(再次按照Apple文档),则必须手动删除目标中具有相同名称的项目(文件/目录)。
答
以下是我解决这个问题的方法,可能会对某人有所帮助。
- (IBAction)createShortcut:(id)sender {
NSString *sourcepath = [[NSBundle mainBundle] bundlePath];
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);
NSString *theDesktopPath = [paths objectAtIndex:0];
NSString *saveFilePath = [theDesktopPath stringByAppendingPathComponent:@"myApp.app"];
[[NSFileManager defaultManager] copyItemAtPath:sourcepath toPath:saveFilePath error:nil];
}
+0
总是检查和处理文件操作的潜在错误是非常有价值的,也就是说,我会检查copyItemAtPath:call是否返回“YES”,并提供对错误细节的方法调用的“NSError”引用。 – Jay 2013-04-16 17:07:41
确实有意义在用户的硬盘上创建应用程序的克隆?你究竟在努力实现什么?某些* Windows *类似于桌面上的别名? – Jay 2013-04-11 09:04:02
其实我只是想知道如何在目标c中以编程方式复制。我试图使用[[NSFileManager的defaultManager],但它不帮助我可能是我可能是错的地方。 – fazal 2013-04-11 09:12:24
您是否添加了错误处理和'NSLog()' - 是否返回了一个'NSError'? – Jay 2013-04-11 12:09:44