IOS NSFileHandle的使用七 (NSFileHandle的概念和用法)

1、读取文件类和经常使用方法
spa

    NSFileManager类主要对文件的操做(删除、修改、移动、复制等等)。
code

    NSFileHandle类主要对文件内容进行读取和写入操做,能够使用NSFileHandle作文件的断点续传。
对象

    NSFileHandle处理文件的步骤:
get

    一、建立一个NSFileHandle对象;
string

    二、对打开的文件进行I/O操做;
it

    三、关闭文件;
class

2、经常使用方法 test

+ (id)fileHandleForReadingAtPath:(NSString *)path;    //打开一个文件只准读
+ (id)fileHandleForWritingAtPath:(NSString *)path;    //打开一个文件只准写
+ (id)fileHandleForUpdatingAtPath:(NSString *)path;    //打开一个文件可读写
//
- (NSData *)availableData;    //从设备或通道返回可用的数据
- (NSData *)readDataToEndOfFile;    //从当前位置读取到文件尾
- (NSData *)readDataOfLength:(NSUInteger)length;    //读取指定长度的内容
//
- (void)writeData:(NSData *)data;    //写数据

- (unsigned long long)offsetInFile;    //获取当前文件偏移量
- (unsigned long long)seekToEndOfFile;    //移动到文件尾
- (void)seekToFileOffset:(unsigned long long)offset;    //移动到指定偏移量
- (void)truncateFileAtOffset:(unsigned long long)offset;    //设置文件为指定大小
- (void)closeFile;    //关闭文件

3、相关代码以下:coding

    一、向指定文件中写入数据
file

        NSString *homepath = NSHomeDirectory();
        NSLog(@"homepath:%@",homepath);
        NSString *filepath = [homepath stringByAppendingPathComponent:@"Data/TestData/test.txt"];
        NSLog(@"filepath:%@",filepath);
        
        NSFileHandle *filehandle = [NSFileHandle fileHandleForUpdatingAtPath:filepath];
        //NSFileHandle *filehandle = [NSFileHandle fileHandleForWritingAtPath:filepath];
        
        [filehandle seekToEndOfFile];
        NSString *str = @"追加的数据";
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        
        [filehandle writeData:data];
        [filehandle closeFile];

    二、向指定文件中读出数据

        NSString *homepath = NSHomeDirectory();
        NSString *filepath = [homepath stringByAppendingPathComponent:@"Data/TestData/test.txt"];
        NSFileHandle *filehandle = [NSFileHandle fileHandleForUpdatingAtPath:filepath];
        
        NSUInteger length = [filehandle availableData].length;
        [filehandle seekToFileOffset:length/2];
        
        NSData *data = [filehandle readDataToEndOfFile];
        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        NSLog(@"the data is :%@",str);
        [filehandle closeFile];

    三、对文件进行相关操做

        NSString *homepath = NSHomeDirectory();
        NSString *filepath = [homepath stringByAppendingPathComponent:@"Data/TestData/test.txt"];
        NSString *targetpath = [homepath stringByAppendingPathComponent:@"Data/TestData/test2.txt"];
        
        NSFileManager *filemanager = [NSFileManager defaultManager];
        
        BOOL result = [filemanager createFileAtPath:targetpath contents:nil attributes:nil];
        if (result == true) {
            NSLog(@"文件建立成功!");
        }
        
        NSFileHandle *sourcefilehandle = [NSFileHandle fileHandleForReadingAtPath:filepath];
        NSFileHandle *targetfilehandele = [NSFileHandle fileHandleForWritingAtPath:targetpath];
        
        NSData *data = [sourcefilehandle readDataToEndOfFile];
        [targetfilehandele writeData:data];
        
        [sourcefilehandle closeFile];
        [targetfilehandele closeFile];
相关文章
相关标签/搜索