zoukankan      html  css  js  c++  java
  • NSFileHandle的使用方法---iOS上的归档(增加更改内容的方法).

    上一章我们介绍了在iOS上的归档以及解档, 今天我们在归档之后稍微做一些改变, 使得解档之后得到的结果有所不同, 这个方法类似NSMutableXXX, 可修改里面的参数, 下面让我们来看看吧.

    涉及的方法:

    seekToFileOffset:这个方法是寻求方法的偏移, 意思就是在文件中寻找文本里的起点.

    readDataOfLength:这个方法是指读取文件的长度是多少.

    offsetInFile:是指写到第几个位置.

    #import "ViewController.h"
    #define PZ NSLog(@"----我是一条华丽的分割线----");
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.txt"];
    //    NSLog(@"%@", path);
        //1.创建文件
        [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];
        NSString *str = @"Hello, world!";
        PZ;
        
        //2.只写的方式打开文件, feleHandleForWritingAtPath是返回一个只写的方法.
        NSFileHandle *writeHanle = [NSFileHandle fileHandleForWritingAtPath:path];
        //把str里的字符串以UTF8编码存入data.
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
        //把data里的东西存入writeHandle
        [writeHanle writeData:data];
        //再一次添加, 会直接加到前一个字符串的后面.
        [writeHanle writeData:data];
        PZ;
    
        //seekToFileOffset:0 是指跳到文件开头.
        [writeHanle seekToFileOffset:0];
        //把字符串@"xxx"以UTF8编码写入writeHanle文件中.
        [writeHanle writeData:[@"xxx" dataUsingEncoding:NSUTF8StringEncoding]];
        //offsetInFile是指写到第几个位置.
        NSLog(@"%llu", writeHanle.offsetInFile);
    
        PZ;
        //4.关闭文件
        [writeHanle closeFile];
        PZ;
        //使用fileURLWithpath读取path的路径.
        NSURL *url = [NSURL fileURLWithPath:path];
        //再把url里面的传给readHandle.
        NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingFromURL:url error:nil];
        
        //offsetInFile是指写到第几个位置.
        NSLog(@"%llu -----", readHandle.offsetInFile);
        //seekToFileOffset:是指定文件的偏移量.
        [readHandle seekToFileOffset:0];
        
        //readDataOfLength:的意思就是阅读readHandle文档中10的长度内容.
        NSData *data1 = [readHandle readDataOfLength:10];
        //把二进制文件data1以UTF8编码存入NSString对象str2中.
        NSString *str2 = [[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding];
        //关闭文件
        NSLog(@"%@", str2);
        [readHandle closeFile];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end

    输出的结果:

    2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] 3
    2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] 0 -----
    2014-10-19 19:41:58.407 FileHandleDemo[13118:714260] xxxlo, wor
  • 相关阅读:
    vue 小知识
    vue中alert toast confirm loading 公用
    vue 跳外链
    vue 中使用 Toast弹框
    vue 添加vux
    #034Python选修课第二届Turtle绘图大赛
    #033 信安培训基础题Python解决网络安全实验室|网络信息安全攻防学习平台
    #031 测试插入博客园插入视频
    # 030删除数组中的重复元素
    #029 博客换个主题从新开始
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4035359.html
Copyright © 2011-2022 走看看