使用Objective-c中的进度条将文件从一个地方复制到另一个地方[重复]

Posted

技术标签:

【中文标题】使用Objective-c中的进度条将文件从一个地方复制到另一个地方[重复]【英文标题】:Copy file from one place to another using progress bar in Objective-c [duplicate] 【发布时间】:2013-05-05 18:37:46 【问题描述】:

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

 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】:

你可以使用

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

然后从文件属性字典中获取[dictObject valueForKey@"NSFileSize"];

【讨论】:

如何获取?当我调用它时,它只会给我整个文件大小.. 而不是当前的。 你的意思是你想知道新文件被复制了多少。 那种。当我调用 NSFileSize 函数时,它只是给了我文件的整个大小。复制时是否可以获取当前大小,以便我可以使用进度条。 你可以试试“- (unsigned long long)fileSize;”代替方法。 IIRC 这将返回您所期望的,而“NSFileBusy”属性为 YES。

以上是关于使用Objective-c中的进度条将文件从一个地方复制到另一个地方[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CoreGraphics - 如何在平面上一个一个地绘制矩形?

iOs后台线程中的函数调用

从objective-C文件激活swift文件中的功能

使用完成处理程序(闭​​包)语法从objective-c文件调用swift文件中的函数

如何在 Kubernetes 中使用 tqdm

因为我可以将所有文件从一个目录移动到 Objective-C 中的另一个目录?