objective-C NSFileHandle 的方法

// NSFileHandle 文件句柄 (专门操作文件的,不能操作文件夹)
// 文件代言人,如果将NSFileHandle对象和一个文件关联以后
// 从文件句柄中读数据就相当于从文件中读数据
// 往文件句柄中写数据就相当于往文件中写数据

#import 

#define PATH @"/Users/huzhiping/Desktop/objective-c/第二周/Day4/Day0324-homework/homework/TXT/1.txt"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
#pragma mark - 文件读操作
        
        // 1.创建文件句柄对象,和文件关联
        // 以只读的形式打开文件(只能通过文件句柄,对文件进行读操作)
        // 参数1 需要和文件关联的文件的路径
        NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:PATH];
        
        // 2.读取文件内容
        // a.读到文件末尾
        NSData *data1 = [handle readDataToEndOfFile];
        // 将二进制转换为字符串
        NSString *str = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
        NSLog(@"1===\n%@", str);
        
        // b.读取指定长度的内容
        // (如果在执行当前读操作前已经从这个文件句柄中读取过数据,
        //  那么这次读取会从上一次读取结束的位置接着读数据)
        NSData *data2 = [handle readDataOfLength:200];
        // 将二进制转换为字符串
        NSString *str2 = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];
        NSLog(@"2===:\n%@", str2);

        
        // 3.设置读取进度
        // 将读写进度设置到指定的位置
        // 参数:偏移量(读文件的起始位置)
        [handle seekToFileOffset:150];
        NSData *data3 = [handle readDataOfLength:400];
        // 将二进制转换为字符串
        NSString *str3 = [[NSString alloc] initWithData:data3 encoding:NSUTF8StringEncoding];
        NSLog(@"3===:\n%@", str3);

        
        
#pragma mark - 文件写操作
        // b.以只写的形式打开文件(只能通过文件句柄,对文件进行写操作)
        // 将指定的数据写入文件句柄中(会覆盖原来的数据)
        // 参数:数据的二进制
        handle = [NSFileHandle fileHandleForWritingAtPath:PATH];
        NSString *str4 = @"hello, wrold";
        // 将字符串转换为二进制
        NSData *data4 = [str4 dataUsingEncoding:NSUTF8StringEncoding];
        [handle writeData:data4];
        
        // 每次文件句柄中写数据的时候,也会接着上一次写操作结束的位置接着往后面写
        NSString *str5 = @"was\n";
        // 将字符串转换为二进制
        NSData *data5 = [str5 dataUsingEncoding:NSUTF8StringEncoding];
        [handle writeData:data5];
        
        // 设置读写进度
        // 从文件的最后开始写
        [handle seekToEndOfFile];
        NSString *str6 = @"66666\n";
        // 将字符串转换为二进制
        NSData *data6 = [str6 dataUsingEncoding:NSUTF8StringEncoding];
        [handle writeData:data6];
        
        
        // 清除文件内容,剩下指定长度的内容,参数传零就是文件清空
        [handle truncateFileAtOffset:10];
        
        
        
        
    }
    return 0;
}

你可能感兴趣的:(objective-C NSFileHandle 的方法)