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

时间:2012-05-10 01:05:14

标签: 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];
    }
}

我收到的错误:

The file couldn't be opened because the specified URL type isn't supported.

最后记录了什么:

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

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

1 个答案:

答案 0 :(得分:19)

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