OC-文件读取实例

Example:复制一个大型文件,为了节约内存,每次只读取500个字节。

源码:

        NSString *homePath = NSHomeDirectory();

        NSString *srcPath = [homePath stringByAppendingPathComponent:@"GitHub for Mac 176.zip"];

        NSString *targetPath = [homePath stringByAppendingPathComponent:@"GitHub for Mac 176_bak.zip"];

        

        NSFileManager *fileManager = [NSFileManager defaultManager];

        BOOL success = [fileManager createFileAtPath:targetPath contents:nil attributes:nil];

        if (success) {

            NSLog(@"create success!");

        }

        

        NSFileHandle *inFile = [NSFileHandle fileHandleForReadingAtPath:srcPath];

        NSFileHandle *outFile = [NSFileHandle fileHandleForWritingAtPath:targetPath];

        NSDictionary *fileAttri = [fileManager attributesOfItemAtPath:srcPath error:nil];

        NSNumber *fileSizeNum = [fileAttri objectForKey:NSFileSize];

        

        BOOL isEnd = YES;

        NSInteger readSize = 0;

        NSInteger fileSize = [fileSizeNum longValue];

        while (isEnd) {

            NSInteger subLeng = fileSize - readSize;

            NSData *data = nil;

            

            if (subLeng < 500) {

                isEnd = NO;

                data = [inFile readDataToEndOfFile];

            }else {

                data = [inFile readDataOfLength:500];

                readSize += 500;

                [inFile seekToFileOffset:readSize];

            }

            [outFile writeData:data];

        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值