gpt4 book ai didi

iphone - 使用 NSFileManager 复制文件期间更新进度条

转载 作者:行者123 更新时间:2023-12-03 19:31:55 27 4
gpt4 key购买 nike

我复制文件,然后我的应用程序完成从资源到缓存目录的启动。但我想在复制文件期间更新进度条。

我使用以下代码复制文件:

-(BOOL)copyDirectory:(NSString*)source toDirectory:(NSString*)targat
{
BOOL retVal = YES;
NSFileManager *fileManager = [[NSFileManager alloc] init];

NSError *error;
if ([fileManager fileExistsAtPath:targat] == YES)
{
NSError *error = nil;
[fileManager removeItemAtPath:targat error:&error];
}


if(![fileManager copyItemAtPath:source
toPath:targat
error:&error])
{
NSLog(@"Error copy files: %@", [error description]);
retVal = NO;
}
[fileManager release];

return retVal;
}

我想不出一个好主意,如何根据复制文件的进度来更新进度条。

最佳答案

在高层次上,您可以采取以下方法:

  1. 在单独的线程 (P1) 中运行复制过程
  2. 运行另一个线程 (P2),定期(例如每 100 毫秒)读取目标文件 current_size
  3. 计算current_size/total_size
  4. 更新进度条 UI 元素

那么您只想找出文件的大小,实际上不必打开它。只需像这样使用 NSFileManager 即可:

NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:self.finalPath error:NULL];
unsigned long long fileSize = [attributes fileSize]; // in bytes

关于iphone - 使用 NSFileManager 复制文件期间更新进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17544145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com