使用Objective-c中的进度条将文件从一个位置复制到另一个位置

时间:2013-05-05 18:37:47

标签: objective-c macos cocoa nsprogressindicator

我想在将文件从一个地方复制到另一个地方时使用进度条显示进度。所以这是复制文件的代码:

 if([fileManager isReadableFileAtPath:sourcePath])
    [fileManager copyItemAtPath:sourcePath toPath:destinationPath error:nil];

这是进度条的代码(我使用NSProgressIndicator):

// Set the max value to our source file size
[_localProgressIndicator setMaxValue:fileSizeTotal];
[_localProgressIndicator setDoubleValue:0.0];

//Start showing progress bar in using NSTime
if(!timerForProgressBar){
    timerForProgressBar = [NSTimer scheduledTimerWithTimeInterval:0.05
                                                            target:self
                                                         selector:@selector(checkCopyingPorgress:)
                                                          userInfo:nil
                                                           repeats:YES];
    [_localProgressIndicator startAnimation:self];
}

-(void)checkCopyingPorgress:(NSTimer *)aTimer
{
  if(fileCurrentSize >= fileSizeTotal)
  {
     fileCurrentSize = 0;
     [aTimer invalidate];
     aTimer = NULL;
     [_localProgressIndicator setDoubleValue:0.0];
     [_localProgressIndicator stopAnimation: self];
  }
  else
  {
    [_localProgressIndicator setDoubleValue: fileCurrentSize/100.0];
    [_localProgressIndicator displayIfNeeded];
  }
}

所以我的问题是当我将文件从一个地方复制到另一个地方时,如何从fileManager获取“fileCurrentSize”?谢谢 !!

1 个答案:

答案 0 :(得分:7)

您可以使用

- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error

然后从文件属性字典

中获取[dictObject valueForKey@"NSFileSize"];