OC文件句柄


//NSFileHandle文件句柄(只能操作文件不能操作文件夹)

//文件代言人,如果将NSFileHandle对象和一个文件关联以后

//从文件句柄中读数据就相当于从文件中读数据,往文件句柄写数据就相当于往文件中写数据

#import <Foundation/Foundation.h>

#define PATH @"/Users/IOS1601/Desktop/exercise/a.txt"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

#pragma mark ---文件读操作---

        //1.创建文件句柄对象和文件关联

        //方式一:以只读的形式打开文件(只能通过文件句柄对文件进行只读操作)

        //参数:需要和文件句柄关联的文件路径

        NSFileHandle *handle = [NSFileHandle

                                fileHandleForReadingAtPath:PATH];

        //2.读取文件内容

        //a.读到文件末尾得到的是二进制数据

        NSData *data1 = [handle readDataToEndOfFile];

        //将二进制文件转换成字符串

        NSString *str1 = [[NSString alloc ] initWithData:data1

                                                encoding:NSUTF8StringEncoding];

        NSLog(@"\n%@\n",str1);

        

        //b.读取指定长度的内容(如果在执行当前这个读操作前,已经从

        //文件句柄中读取过数据,那么这次读取就从上次读取的位置继续读取);

        

       NSData *data2 =  [handle readDataOfLength:7];

        

        NSString *str2 =  [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];

        NSLog(@"**%@",str2);

        

        

        //c.从指定的位置读取,设置读写进度

        //参数:偏移量(相对于文件的起始位置)

        [handle seekToFileOffset:3];

        NSData *data3 = [handle readDataOfLength:2];

         NSString *str3 =[[NSString alloc] initWithData:data3

                                               encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str3);

        

#pragma mark ---文件写操作---

        //方式二:以只写的形式打开文件(只能通过文件句柄进行只写操作)

      //  NSFileHandle *handle1 = [NSFileHandle

        //将指定的数据写入文件句柄中,(会覆盖原来的数据)

        //参数:数据的二进制形式

        handle = [NSFileHandle fileHandleForWritingAtPath:PATH];

        

        NSString *str4 = @"hahha";

        

        NSData *data4 = [str4 dataUsingEncoding:NSUTF8StringEncoding];


        [handle writeData:data4];

        

        //每次从文件句柄中写数据的时候,都是从

        //第一行空的开始写,下一次写也会接着上一次写完的位置接着后面写

        NSString *str5 = @"luhan";

        

        NSData *data5 = [str5 dataUsingEncoding:NSUTF8StringEncoding];

    

        [handle writeData:data5];

        

        //2.设置读写进度

        //将读写进度定位到文件末尾(就是从文件的末尾开始写)

        [handle seekToEndOfFile];

        NSString *str6 = @"honey honey";

        NSData *data6 = [str6 dataUsingEncoding:NSUTF8StringEncoding];

        [handle writeData:data6];

        

        //返回值:当前位置到最后的长度

        long long length = [handle seekToEndOfFile];

        NSLog(@"%lld",length);

        

        //3.清除文件内容,从指定的位置开始清除内容

        //传入0表示把文件的所有的内容清除

        [handle truncateFileAtOffset:10];

        

        

    }

    return 0;

}


你可能感兴趣的:(OC文件句柄)