读取和写入 文件 (NSFIleManger 与 NSFileHandle)

读取和写入 文件

//传递文件路径方法

-(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath

{

    self = [super init];

    if (self != nil) {

        _srcPath = [srcPath copy];

        _targetPath = [targetPath copy];

    }

 

    return self;

}

 

//开始读文件

-(void)startRead

{

    

    NSFileManager *fileManager = [NSFileManager defaultManager];

    //创建文件

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

    if (success) {

        NSLog(@"文件创建成功!!!");

    }

    //读取文件

    NSFileHandle  *inFilehandle = [NSFileHandle fileHandleForReadingAtPath:_srcPath];

    

    //写入目标文件

    NSFileHandle  *outFileHandle = [NSFileHandle fileHandleForWritingAtPath:_targetPath];

    

    //利用文件的属性获取文件的大小,现获取文件的属性,然后通过关键 键 获取文件的大小,在转化为基本数据类型

    NSDictionary *dic = [fileManager attributesOfItemAtPath:_srcPath error:nil];

    

    NSNumber *fileNum = [dic objectForKey:NSFileSize];

    

    self.fileSize = [fileNum longLongValue];

    

    BOOL isEnd = YES;

    NSAutoreleasePool *pool = nil;

    int n = 0;

    while (isEnd) {

        if (n % 10 ==0) {

            [pool release];

            pool = [[NSAutoreleasePool alloc] init];

            

        }

        NSInteger subSize = self.fileSize - _alredyReadFileSize;

        NSData *data;

        if (subSize < 5000) {

            isEnd = NO;

            data = [inFilehandle readDataToEndOfFile];

        }else{

            data = [inFilehandle readDataOfLength:5000];

            self.alredyReadFileSize += 5000;

            [inFilehandle seekToFileOffset:_alredyReadFileSize];

 

        }

        [outFileHandle writeData:data];

        n++;

    }

    [outFileHandle closeFile];

    NSLog(@"复制文件成功");

    

 

}

转载于:https://www.cnblogs.com/meixian/p/5370924.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值