Objective-C使用NSFileHandle类对文件进行基本操作,IOS文件操作
NSFileHandle类中得方法可以对文件进行基本的读写,偏移量的操作。
NSFileHandle基本步骤:
1、打开文件,获取一个NSFileHandle对象。
2、对打开NSFileHandle的文件对象行I/O操作
3、关闭文件对象
NSFileHandle常用方法:
+(NSFileHandle*)fileHandleForReadingAtPath:path
打开一个文件用于读入
+(NSFileHandle*)fileHandleForWritingAtPath:path
打开一个文件用于写入
+(NSFileHandle*)fileHandleForUpdatingAtPath:path
打开一个文件用于读写
-(NSData*)availableData
从设备或者通道返回可用数据
-(NSData*)readDataToEndOfFile
读取其余的数据知道文件的末尾(最多UINT_MAX字节)
-(NSData*)readDataOfLength:(NSUInteger)bytes
从文件中读取指定字节的内容
-(void)writeData:data 将data写入文件
-(unsigned
long long)offsetInFile 获取当前偏移量
-(void)seekToFileOffset:offset
设置偏移量
-(unsigned long long)seekToEndOfFile
将偏移量定位到文件的末尾
-(void)truncateFileAtOffset:offset
讲文件的长度设置为offset字节
-(void)closeFile
关闭文件
方法fileHandleForWritingAtPath和fileHandleForUpdatingAtPath所指定的文件必须是已经存在的,否则返回nil,另外对于这两个方法中文件的偏移量都是为文件的开始。
方法readDataToEndOfFile每次从文件中读取最多UNIT_MAX字节的数据,这个量定义在
<limits.h>中。
在UNIX系统下编程打开文件进行写入并不会截断文件,需要自己完成截断
1、实例程序,通过程序对文件进行一些基本操作:
-
-
-
-
-
-
-
-
-
- #import <Foundation/Foundation.h>
-
-
- int main(int argc, const charchar * argv[])
- {
-
-
- @autoreleasepool {
- NSFileHandle *inFile,*outFile;
- NSData *buffer;
- NSString *fileContent = @"这些是文件内容,这些是文件内容,这些是文件内容,这些是文件内容,这些是文件内容";
- NSFileManager *fm = [NSFileManager defaultManager];
-
-
- [fm createFileAtPath:@"testFile.txt" contents:[fileContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
-
- [fm createFileAtPath:@"outFile.txt" contents:nil attributes:nil];
-
-
- inFile = [NSFileHandle fileHandleForReadingAtPath:@"testFile.txt"];
-
- outFile = [NSFileHandle fileHandleForWritingAtPath:@"outFile.txt"];
-
- if(inFile!=nil){
-
- buffer = [inFile readDataToEndOfFile];
-
-
- [outFile truncateFileAtOffset:0];
-
-
- [outFile writeData:buffer];
-
-
- [outFile closeFile];
-
-
- NSLog(@"%@",[NSString stringWithContentsOfFile:@"outFile.txt" encoding:NSUTF8StringEncoding error:NULL]);
-
-
-
- [fm createFileAtPath:@"outFile2.txt" contents:nil attributes:nil];
-
-
- outFile = [NSFileHandle fileHandleForWritingAtPath:@"outFile2.txt"];
-
-
- for (int i = 0; i<10; i++) {
-
- [outFile seekToEndOfFile];
-
- [outFile writeData:buffer];
- }
-
-
- NSLog(@"outFile2:%@",[NSString stringWithContentsOfFile:@"outFile2.txt" encoding:NSUTF8StringEncoding error:NULL]);
-
-
- [outFile closeFile];
- [inFile closeFile];
-
-
- }
-
-
- }
- return 0;
- }
NSFileHandle类,布布扣,bubuko.com
NSFileHandle类
原文:http://www.cnblogs.com/yulang314/p/3713471.html