• 热门专题

Objective-C OC中文件读取类(NSFileHandle)介绍和常用使用方法

作者:  发布日期:2014-02-12 20:53:36
Tag标签:Objective-C  文件  读取  
  • NSFileHandle

    NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等)

    NSFileHandle类主要对文件的内容进行读取和写入操作

    NSFileHandle处理文件的步骤

    1:创建一个NSFileHandle对象

    2:对打开的文件进行I/O操作

    3:关闭文件对象操作

    常用处理方法

     

    + (id)fileHandleForReadingAtPath:(NSString *)path; //打开一个文件准备读取
    + (id)fileHandleForWritingAtPath:(NSString *)path;  //打开一个文件准备写入
    + (id)fileHandleForUpdatingAtPath:(NSString *)path; //打开一个文件可以更新(读取,写入)
    - (NSData *)availableData;      //返回可用的数据
    - (NSData *)readDataToEndOfFile;  //从当前的节点位置读取到文件末尾
    - (NSData *)readDataOfLength:(NSUInteger)length; //从当前的节点位置开始读取指定长度的数据
    - (void)writeData:(NSData *)data;    //写入数据
    - (unsigned long long)offsetInFile;   //获取当前文件的偏移量
    - (unsigned long long)seekToEndOfFile; //跳转到文件结尾
    - (void)seekToFileOffset:(unsigned long long)offset; //跳转到指定文件的指定的偏移量的位置
    - (void)truncateFileAtOffset:(unsigned long long)offset;  //设置文件长度
    - (void)synchronizeFile;  //文件同步
    - (void)closeFile;   //关闭文件

     

    实例代码

    1(对文件进行加入数据:):

    @autoreleasepool {
            NSString *homePath=NSHomeDirectory();
            NSLog(@"%@",homePath);
            
            NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];
            NSLog(@"%@",filePath);
            NSFileHandle *fileHandle=[NSFileHandle fileHandleForUpdatingAtPath:filePath];
            
            [fileHandle seekToEndOfFile];
            NSString *str=@"测试加入的数据为";
            NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
            [fileHandle writeData:data];
            [fileHandle closeFile];
        }
        return 0;

     

     

    2:对文件中的数据进行定位:

     

              NSString *homePath=NSHomeDirectory();
              NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];
              NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];
              NSUInteger length= [fileHandle availableData].length;
              [fileHandle seekToFileOffset:length/2];
              NSData *data=[fileHandle readDataToEndOfFile];
              NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
              NSLog(@"%@",str);
     
    
    
    [特别讲一下NSData类的一些方法]
    
    
    3:复制文件中的数据
    
    
    //复制文件 NSString *homePath=NSHomeDirectory(); NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"]; //NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath]; NSString *targetPath=[homePath stringByAppendingFormat:@"/Desktop/outfile"]; NSFileManager *fileManager=[NSFileManager defaultManager]; BOOL result=[fileManager createFileAtPath:targetPath contents:nil attributes:nil]; if(result){ NSLog(@"create success!"); } NSFileHandle *inFileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath]; NSFileHandle *outFileHandle=[NSFileHandle fileHandleForWritingAtPath:targetPath]; NSData *inData=[inFileHandle availableData]; //读出文件中所有的数据 //下面开始进行写文件 [outFileHandle writeData:inData]; [inFileHandle closeFile]; [outFileHandle closeFile];
About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规