zoukankan      html  css  js  c++  java
  • NSFileManager和NSFileHandler的作用, category的理解

    NSFileManager类可以管理文件系统中的文件和目录,也可以定位、判断是否存在、创建、拷贝、删除文件和目录,还可以获得文件和目录的信息;

    对于读写文件,NSFileManager只可以读写字符串类型的文件,而NSFileHandler是文件描述符的封装类,可以读写文件(图片、设备、网络接口)、套接字、管道和设备。

    代码示例:

    /**
     *  读文件
     */
    - (void)readFile{
        //1、实例化
        NSFileHandle *readFile = [NSFileHandle fileHandleForReadingAtPath:@"/tmp/Hello.txt"];
        //2、读文件到文件尾部
        NSData *buffer = [readFile readDataToEndOfFile];
        //3、将NSData转换成字符串
        NSString *temp = [[NSString alloc] initWithData:buffer encoding:NSUTF8StringEncoding];
        //4、关闭文件
        [readFile closeFile];
    }
    
    /**
     *  写文件
     */
    - (void)writeFile{
        //1、创建写文件处理器
        NSFileHandle *writeFile = [NSFileHandle fileHandleForWritingAtPath:@"/tmp/newFile.txt"];
        //2、将字符串转换成NSData
        NSString *contents = @"hello everyone";
        NSData *buffer = [contents dataUsingEncoding:NSUTF8StringEncoding];
        //3、写NSData
        [writeFile writeData:buffer];
        //4、关闭文件
        [writeFile closeFile];
    }

    关于category的一些理解

    刚才在看category, 想到分类可以用来添加方法,子类也可以用来添加方法,子类还可以添加实例变量,不是比分类更好吗,为啥还要使用分类?

    设想一个场景:想给系统类比如NSString新添加一个方法,而这个方法在整个项目中会大量用到,这时候如果使用子类A来添加这个方法,那么其他NSString的子类想使用这个方法,必须继承子类A,才能使用这个方法。但是有时候我们并不想继承子类A,分类的使用优势这时候出来了。

         使用category给NSString新添加一个方法,其他NSString的子类想使用这个方法,直接继承NSString,并引用分类就可以使用了 !

      分类通常作为一种组织框架代码的工具来使用。

        查了下资料,介绍分类的用途:

    1、在不创建继承类的情况下实现对已有类的扩展;

    2、简化类的开发工作。例如,当一个类需要多个程序员协同开发时,分类可以将同一个类根据用途分别放在不同的源文件中,从而便于程序员独立开发相应的方法集合;

    3、将常用的相关方法分组;

    4、在没有源代码的情况下可以用来修复bug

  • 相关阅读:
    poj 3616 Milking Time
    poj 3176 Cow Bowling
    poj 2229 Sumsets
    poj 2385 Apple Catching
    poj 3280 Cheapest Palindrome
    hdu 1530 Maximum Clique
    hdu 1102 Constructing Roads
    codeforces 592B The Monster and the Squirrel
    CDOJ 1221 Ancient Go
    hdu 1151 Air Raid(二分图最小路径覆盖)
  • 原文地址:https://www.cnblogs.com/tandaxia/p/4314825.html
Copyright © 2011-2022 走看看