gpt4 book ai didi

objective-c - 在 Mac 应用程序中移动 shell 脚本创建的文件

转载 作者:行者123 更新时间:2023-12-03 17:57:41 26 4
gpt4 key购买 nike

我在移动由 Mac 应用程序中的 shell 脚本创建的文件时遇到问题。

文件似乎保存在:

/Users/USERNAME/Library/Developer/Xcode/DerivedData/APPLICATION_NAME/Build/Products/Debug/

我尝试按如下方式使用 NSFileManager 但没有任何反应:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
[[NSFileManager defaultManager] movePath:[NSString stringWithFormat:@"%/Users/USERNAME/Library/Developer/Xcode/DerivedData/APPLICATION_NAME/Build/Products/Debug/%@", filename] toPath:documentsDirectory handler:nil];

以及尝试使用带有 NSTask 的 shell 脚本来移动文件。

我可能做错了什么,有谁知道如何将文件从该文件夹移动到文档文件夹,甚至更好的桌面?

先谢谢大家了

最佳答案

要在应用程序包中找到该文件,您需要使用 mainBundle 。假设你有一个文件 foo.txt您需要找到它,并且它存储在标准资源位置,请执行以下操作:

NSBundle *appBundle = [NSBundle mainBundle];
NSString *srcPath = [appBundle pathForResource: @"foo" ofType: @"txt"];

此时,您应该拥有 foo.txt 的路径在 srcPath 中。

如果您要为用户下载文件,则应将其放入用户的下载目录中。如果您下载该文件供内部使用,则它属于 /Library/Application Support/<yourapp>/...~/Library/Application Support/<yourapp>... .

找到这些的正确方法是使用 NSSearchPathForDirectoriesInDomains .

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDownloadsDirectory, 
NSUserDomainMask, YES);

将产生一个数组(应该是 1 个元素),其中包含当前用户的下载目录路径。如果他们请求该文件,您应该使用它作为目标路径。

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory,
NSUserDomainMask, YES);

将生成一个数组(应为 1 个元素),其中包含当前用户的应用程序支持路径。如果这是供应用程序内部使用的每用户下载,则应将其存储在使用您的应用程序名称或附加到此路径的标识符创建的子目录中。

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, 
NSSystemDomainMask, YES);

将生成一个数组(应为 1 个元素),其中包含计算机的应用程序支持路径。如果这是供应用程序内部使用的计算机范围下载,则应将其存储在使用您的应用程序名称或附加到此路径的标识符创建的子目录中。

创建源路径和目标路径后,您将需要使用 NSFileManager将文件移动到位。对于应用程序支持目录,您需要首先验证所需的目录是否存在,如果不存在,请创建它(使用 -createDirectoryAtPath:withIntermediateDirectories:attributes:error )。

NSFileManager *manager = [[NSFileManager alloc] init];
NSError *error;
if (![manager copyItemAtPath: srcPath toPath: dstPath error: &error]) {
NSLog("Error copying %@ to %@, %@", srcPath, dstPath, error);
}
[manager release];

关于objective-c - 在 Mac 应用程序中移动 shell 脚本创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com