在发生复制失败时自动删除目标文件

时间:2014-03-18 05:28:42

标签: objective-c cocoa

我使用NSFileHandler将一个文件复制到多个目的地:

while([fileMultiCopy copyBlock])
{
    [progressIndicator setDoubleValue: [fileMultiCopy progress]];
    if (stopCopyFlag) { // User clicked stop button
        [fileMultiCopy unlinkTargets]; // Delete partially copied files
        break;
    }
}

FileMultiCopy实施:

-(BOOL) copyBlock
{
    NSData *buffer = [sourceHandle readDataOfLength: blockSize];
    if ( [buffer length] == 0) return NO;
    for (NSFileHandle *handle in targetHandleArray)
        [handle writeData: buffer];
    return YES;
}

如您所见,我正在使用NSFileHandle,因为

  1. 我想"读一次写多次" - 文件被复制到多个目的地
  2. 文件由块复制,提供顺利更新NSProgessIndicator的功能
  3. 通过将stopCopyFlag更改为YES(来自其他线程)来中止复制过程
  4. 如果用户按下"停止"按钮,我的程序删除部分复制的文件,但如果程序被用户杀死,如何删除它们?我想要复制或不复制文件,但不是部分复制。

0 个答案:

没有答案