NSFileHandle類允許更有效的使用文件,可以實(shí)現(xiàn)如下功能:
1、打開一個(gè)文件,執(zhí)行讀、寫或更新讀寫操作;
2、在文件中查找指定位置;
3、從文件中讀取特定數(shù)目的字節(jié),或?qū)⑻囟〝?shù)目的字節(jié)寫入文件中
另外,NSFileHandle類提供的方法也可以用于各種設(shè)備或套接字。一般而言,我們處理文件時(shí)都要經(jīng)歷三個(gè)步驟:打開文件,獲取一個(gè)NSFileHandle對象;對打開文件執(zhí)行相關(guān)操作;關(guān)閉文件。
一、只讀讀取文件內(nèi)容
//NSFileHandle對文件內(nèi)容進(jìn)行操作
//獲取沙盒中某txt文件的路徑
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"Documents/file.txt"];
//以只讀的方式打開文件生成文件句柄
NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingAtPath:path];
//注:內(nèi)存:內(nèi)部存儲器;硬盤:外部存儲設(shè)備。從硬盤到內(nèi)存(從文件到內(nèi)容)叫做讀,從內(nèi)存到文件(硬盤)叫做寫
//讀取文件內(nèi)容的兩種方式
//? ? NSData *data = [fileHandle readDataOfLength:3];
//? ? data = [fileHandle readDataOfLength:5]; //繼續(xù)上面3個(gè)字節(jié)后,繼續(xù)讀取5個(gè)字節(jié)
NSData *? data = [fileHandle readDataToEndOfFile];//如果文件內(nèi)容不是特別多,可以直接讀取全部內(nèi)容
二、只寫修改文件內(nèi)容
//NSFileHandle對文件內(nèi)容進(jìn)行操作
//獲取沙盒中某txt文件的路徑
NSString *homePath = NSHomeDirectory();
NSString *path = [homePath stringByAppendingPathComponent:@"Documents/file.txt"];
//以只寫方式打開文件生成句柄
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:path];
[handle writeData:[@"Hello world!!!" dataUsingEncoding:NSUTF8StringEncoding]];//直接覆蓋掉前面相應(yīng)數(shù)量的字符
[handle truncateFileAtOffset:0];//將文件字節(jié)截短至0,相當(dāng)于將文件清空,可供文件填寫
[handle writeData:[@"Hello world." dataUsingEncoding:NSUTF8StringEncoding]];//填寫文件
[handle seekToEndOfFile];//將讀寫指針設(shè)在文件的尾端
[handle writeData:[@"ni hao" dataUsingEncoding:NSUTF8StringEncoding]];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"---%@",str);