在Cocoa中以编程方式覆盖文件

此代码复制引用的文件并将其放在Docs目录中.我正在尝试构建一个简单的备份解决方案.问题是如果重复该操作,此操作不会覆盖现有文件.

两个问题:

在代码中覆盖的最佳方法是什么?

将当前日期附加到每个复制的文件有多难?在这种情况下,不会有覆盖操作.这对于保持增量备份更有用.如果我决定这样做,我理解我需要创建一个新的路径,以保持组织.

谢谢.

保罗

    NSString * name  = @"testFile";
NSArray  * files = [NSArray arrayWithObject: name];

NSWorkspace * ws = [NSWorkspace sharedWorkspace];

[ws performFileOperation: NSWorkspaceCopyOperation
                  source: @"~/Library/Application Support/testApp"
             destination: @"~/Documents/"
                   files: files
                     tag: 0];

最佳答案 您可以尝试使用NSFileManager,例如下面(未经测试):

// Better way to get the Application Support Directory, similar method for Documents Directory
- (NSString *)applicationSupportDirectory {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
    return [basePath stringByAppendingPathComponent:@"testApp"];
}  

- (void) removeFile {
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *applicationSupportDirectory = [self applicationSupportDirectory];
    NSError *error = nil;

    NSString* filePath = [applicationSupportDirectory stringByAppendingPathComponent: @"testFile"];
    if ([fileManager fileExistsAtPath:filePath isDirectory:NULL]) {
        [fileManager removeItemAtPath:filePath error:&error];
    }
}

编辑:
查看NSFileManager Class Reference以了解可能有用的其他功能(针对您的第二个问题).

点赞