object-c 文件分块写入 NSFileHandle NSFileManager
object-c文件的分块写入,实现大文件的copy,嘿嘿,实现起来是很简单的,终于知道,系统里面copy大文件是啥样子的啦,来看个代码(gowhich说):
//读取大文件,并写入大文件中
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *homePath = NSHomeDirectory();
NSString *srcPath = [homePath stringByAppendingPathComponent:@"android学习路线图介绍.avi"];
NSString *targetPath = [homePath stringByAppendingPathComponent:@"android学习路线图介绍1.avi"];
BOOL success = [fileManager createFileAtPath:targetPath
contents:nil
attributes:nil];
if(success)
{
NSLog(@"成功创建文件 :%@",targetPath);
}
NSFileHandle *infile = [NSFileHandle fileHandleForWritingAtPath:targetPath];
NSFileHandle *outfile = [NSFileHandle fileHandleForReadingAtPath:srcPath];
//获取文件的尺寸
NSDictionary *fileAttr = [fileManager attributesOfItemAtPath:srcPath
error:nil];
NSNumber *fileSizeNum = [fileAttr objectForKey:NSFileSize];
BOOL isEnd = NO;
NSInteger readSize = 0;
NSInteger fileSie = [fileSizeNum longLongValue];
while (!isEnd) {
NSData *data = nil;
NSInteger subleng = fileSie - readSize;
if(subleng < 500)
{
isEnd = YES;
data = [outfile readDataToEndOfFile];
}
else
{
data = [outfile readDataOfLength:500];
readSize += 500;
[outfile seekToFileOffset:readSize];
}
[infile writeData:data];
}
[infile closeFile];
[outfile closeFile];
自己在根目录下面设置一个文件,我的这个文件有44.6M哦,虽然copy比较慢,但是文件是完整的,哈哈
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/469
版权声明
由 durban创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/469