• 读取和写入 文件 (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(@"复制文件成功");

        

     

    }

  • 相关阅读:
    json的eval的小问题
    关于insertBefore
    关于touch-action
    关于 please verify the preference field with the prompt:Tomcat JDK name 问题解决
    总结一下,以软件开发生命周期来说明不同的测试的使用情况
    用户需求、己、竞争对手的关系
    苹果电脑快捷键大全
    软件工程与计算机科学的区别
    有人认为,“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”么?
    Maven 和IDEA的初始配置
  • 原文地址:https://www.cnblogs.com/meixian/p/5370924.html
Copyright © 2020-2023  润新知