cocoa - 如何使用 NSFileManager 复制 UNIX 可执行文件?

标签 cocoa nsfilemanager

我正在尝试使用 NSFileManager copyItemAtURL:toURL:error: 将 UNIX 可执行文件(命令行程序)从一个目录移动到另一个目录,但我总是得到表示不支持 URL 类型的错误。我认为这是因为文件没有扩展名,它被视为目录,但我不确定。是否可以使用 NSFileManager 移动这种类型的文件?

编辑: 这是我的代码

#define SAVE_DIR   [@"~/Library/Prog" stringByExpandingTildeInPath]
#define PROG_PATH  [SAVE_DIR stringByAppendingString:@"/ProgCom"]
#define RESOURCES  [[NSBundle mainBundle] resourcePath]
#define LOCAL_PROG [RESOURCES stringByAppendingString:@"/ProgCom"]

-(void)moveProg
{
    NSError *error = nil;
    NSURL *fromURL = [NSURL URLWithString:LOCAL_PROG];
    NSURL *toURL = [NSURL URLWithString:PROG_PATH];

    NSLog(@"%@", [fromURL path]);
    NSLog(@"%@", [toURL path]);

    if ([fMan fileExistsAtPath:[fromURL path]]) {
        [fMan copyItemAtURL:fromURL
                      toURL:toURL
                      error:&error];
        if (error)
            [NSApp presentError:error];
    }
}

我收到的错误:

由于不支持指定的 URL 类型,因此无法打开文件。

最后记录的内容:

fromURL = /Users/Nick/Library/Developer/Xcode/DerivedData/Prog-dpnblqaraeuecyadjgizbinfrtcm/Build/Products/Debug/Prog.app/Contents/Resources/ProgCom

toURL = /Users/Nick/Library/Prog/ProgCom

最佳答案

问题是您正在使用+[NSURL URLWithString:]。这会产生一个无效的 URL,因为您实际上并没有给它一个 URL。您想要的是 +[NSURL fileURLWithPath:],它将生成一个 file:///Users/Nick/... URL。

关于cocoa - 如何使用 NSFileManager 复制 UNIX 可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526244/

相关文章:

swift - 使用 Swift 的 FileManager 遍历文件夹及其子文件夹中的文件

ios - NSFileManager 不保存

macos - NSSpeechSynthesizer 语音/语言关系

ios - SearchDirectories 与 URLsDirectory - iOS

ios - Objective-C:复制和删除文件(文件管理器)

ios - 使用 NSFileManager 保存用户数据的正确方法是什么?

Swift:如何在 macOS 中观察屏幕是否被锁定

ios - 省略内存管理属性

iphone - 如何使用按钮对浮点值进行舍入

objective-c - 如何创建 Cocoa GUI 来编辑 NSDate 对象数组?