0%

Objective-C NSFileHandle的使用

下面的例子使用NSFileHandle读取写入文件。

#import 

int main (int argc, const char * argv[])
{
    
    @autoreleasepool {
        NSString *file1=@"/Users/fhp/Desktop/1.txt";
        NSString *file2=@"/users/fhp/Desktop/2.txt";
        
        NSFileHandle *inFile=[NSFileHandle fileHandleForReadingAtPath:file1];
        //打开1.txt
        if(inFile==nil)
        {
            NSLog(@"打开1.txt错误");
            return 1;
        }
//		[[NSFileManager defaultManager] createFileAtPath:file2 contents:nil attributes:nil];
        //创建文件 2.txt
        NSFileHandle *outFile=[NSFileHandle fileHandleForWritingAtPath:file2];
        [outFile truncateFileAtOffset:0];
        //清空内容,把指针指向开头
//		[outFile seekToEndOfFile];
        //可以把指针移动到文件结尾,这样就是增加文件内容,也可以seekTo到指定的位置
        
        
        
        NSMutableData *buffer=[NSMutableData dataWithCapacity:2048];
        
        while ((buffer=[inFile readDataOfLength:2048])!=nil) {
            [outFile writeData:buffer];
            //循环读取文件并写入
        }
        

        //当文件不大时,也可以用下面的方法,一次读入整个文件
        //最多不超过UINT_MAX个字节,定义在limits.h中,一般为FFFFFFFF,即4GB
//		NSData *buffer=[inFile readDataToEndOfFile];
//		//读取整个文件内容
//		[outFile writeData:buffer];
//		//写入文件
        [inFile closeFile];
        [outFile closeFile];
        //关闭文件
        
        
    }
    return 0;
    
}