zoukankan      html  css  js  c++  java
  • 读取和写入 文件 (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(@"复制文件成功");

        

     

    }

  • 相关阅读:
    12 Source Code Profilers for C & C++
    HttpWebRequest的使用方法
    MSDN Windows 下载
    Qt 4.7 在VS2010环境下的编译
    [转].NET Logging Tools and Libraries
    硬盘崩溃之后
    .net core 下使用 logdashboard 日志面板
    工具收藏 年终工作总结必备工具之ppt利器
    Dapper 的应用和Dapper.Contrib 的方法封装(一)
    Dapper 的应用和Dapper.Contrib 的方法封装(二)
  • 原文地址:https://www.cnblogs.com/meixian/p/5370924.html
Copyright © 2011-2022 走看看