zoukankan      html  css  js  c++  java
  • 6月19日 NSFileHandle文件类的常用方法


     

     NSFileManager类主要对文件的操作(删除,修改,移动,复制等);

     

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

     

     NSFileHandle处理文件的步骤

     

     1.      创建一个NSFileHandle对象

     

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

     

     3.      关闭文件

     

     可以使用NSFileHandle做文件的断点续传

     

     

     

     (一)  常用方法

     

     //创建方法

     

     +(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)truncateFileAtOffset:(unsigned longlong)offset;//将文件的长度设置为offset字节

     

     -(void)closeFile;//关闭文件

     

     

     

     (二)

     

     //追加数据

     

     NSString *homePath = NSHomeDirectory();

     

     NSString *sourcePath = [homePathstringByAppendingPathComponent:@”需要追加数据的文件路径”];

     

     NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:sourcePath];

     

     //将节点跳到文件末尾

     

     [fileHandle seekToEndOfFile];

     

     NSString *str = @”追加的数据”;

     

     NSData *stringData = [strdataUsingEncoding:NSUTF8StringEncoding];

     

     //追加写入数据

     

     [fileHandle writeData:stringData];

     

     [fielHandle closeFile];

     

     

     

     //定位数据

     

     NSFileManager *fm = [NSFileManagerdefaultManager];

     

     NSString *content = @”abcdefghijklmn”;

     

     [fm createFileAtPath:path contents:[contentdataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

     

     NSFileHandle *fileHandle = [NSFileHandlefileHandleForReadingAtPath:path];

     

     //获取数据长度

     

     NSUInteger length = [[fileHandleavailableData] length];

     

     //偏移量但文件的一半

     

     [fileHandle seekToFileOffset:length/2];

     

     //从一半开始将数据凑到文件最后

     

     NSData *data = [fileHandlereadDataToEndOfFile];

     

     [fileHandle closeFiel];

     

     

     

     //复制文件

     

     NSFileHandle *infile, *outfile;//输入文件,输出文件

     

     NSData *buffer;//读取的缓冲数据

     

     NSFileManager *fileManager = [NSFileManagerdefaultManager];

     

     NSString *homePath = NSHomeDirectory();

     

     //源文件路径

     

     NSString *sourcePath = [homePathstringByAppendingPathComponent:@”testfile.text”];

     

     //输出文件路径

     

     NSString *outPath = [homePathstringByAppendingPathComponent:@”outfile.text”];

     

     //创建输出文件

     

     BOOL success = [fileManagercreateFileAtPath:outPath content:nil attributes:nil];

     

     If (!success){

     

     returnNO;

     

     }

     

     outfile = [NSFileHandlefileHandleForWritingAtPath:outPath];

     

     infile = [NSFileHandlefileHandleForReadingAtPath:sourcePath];

     

     //读取源文件内容

     

     NSData *data = [infile readDataToEndOfFile];

     

     //写入内容

     

     [outfile writeData:data];

     

     [oufile closeFile];

     

     [infile closeFile];

  • 相关阅读:
    Linux内核分析— —操作系统是如何工作的(20135213林涵锦)
    【BARTS计划】【Share_Week1】社交产品思考
    【BARTS计划】【Tips_Week1】20190331更新
    【BARTS计划】【Review_Week1】Google Docs 成为青少年们喜爱的聊天 app
    【学习博客】Python学习初体验
    《构建之法》读书笔记5
    《构建之法》8&16
    《构建之法》读书笔记4
    《构建之法》读书笔记3
    《构建之法》读书笔记2
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3148177.html
Copyright © 2011-2022 走看看