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
  • 相关阅读:
    太湖杯WriteUp
    第九届网安竞赛writeup
    湖湘杯2020 writeup
    利用DNS缓存和TLS协议将受限SSRF变为通用SSRF
    十月学习计划
    2020GACTF部分wp
    2020 天翼杯 部分wp
    DASCTF 安恒七月赛wp
    开发步骤
    垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4035359.html
Copyright © 2011-2022 走看看