OC 第六天

老牛浏览 451评论 0发表于

主要内容:

  1. 文件管理

  2. NSData

objectivec
//
//  main.m
//  01-文件管理类
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        /**
       文件管理类:这是一个类,专门用来管理文件的

         通过单例
         */
        //通过类方法得到管理类的对象
        NSFileManager *manager = [NSFileManager defaultManager];

        NSString *path = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/";
        //通过error可以得知是否成功获得目录里面内容  error:这个参数要写对象指针的地址
        NSError *error = nil;
        //获得目录下的文件内容  注意:1只能获取一层,2.要给全路径
        NSArray *array1 = [manager contentsOfDirectoryAtPath:path error:&error];

        if (error) {
            NSLog(@"获取失败");
        }else{
            NSLog(@"%@",array1);
        }

        //找后缀名为rtf的文件名
        for (NSString *name in array1) {
            if ([name hasSuffix:@".rtf"]) {
                NSLog(@"%@",name);
            }
        }

        //方法二
        //取文件的扩展名
        for (NSString *name in array1) {
            NSString *str = [name pathExtension];
            NSLog(@"%@",str);
        }
        //取路径的各个部分
        NSArray *comArr = [path pathComponents];
        NSLog(@"%@",comArr);

        //取当前目录下的所有文件
        //获取当前目录下面所有的文件(当前目录的文件及子文件夹内的文件) 可以获取多层  注意:应该是全路径
        NSArray *array2 = [manager subpathsOfDirectoryAtPath:path error:nil];

        NSLog(@"%@",array2);
    }
    return 0;
}

//
//  main.m
//  02-创建文件
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
    //1.创建一个文件管理类的对象
        NSFileManager *manager = [NSFileManager defaultManager];

    //创建一个文件
        NSString *path = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/text.txt";

        BOOL isEx = [manager fileExistsAtPath:path];

        if (isEx) {
            NSLog(@"文件名已经存在");
        }else{
            /**
             第一个参数:文件的路径
             第二个参数:文件的内容
             第三个参数:文件的属性,如果为空,那就是默认的属性
             //创建的文件名最好是新的,如果与原来的名字重名,就会将其覆盖
             */
            BOOL isSuc = [manager createFileAtPath:path contents:nil attributes:nil];
            if (isSuc) {
                NSLog(@"成功创建");
            }else{
                NSLog(@"创建失败");
            }

        }

        //获取当前文件的属性
        NSDictionary *dic = [manager attributesOfItemAtPath:path error:nil];

        NSLog(@"dic%@",dic);

        NSNumber *size = dic[NSFileSize];
        //使用方法获取value
        int size1 = (int)[dic fileSize];

        NSLog(@"%i",[size intValue]);

        //创建路径
        /**
        第一个:要创建的路径
         第二个:当为NO时,如果新创建的路径中间增加了原来没有的部分,就会不允许创建  当为YES时,会自动的允许增加,并创建
         */
        NSString *path1 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/good/text.txt";

        BOOL isSuc1 = [manager createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:nil];
        if (isSuc1) {
            NSLog(@"创建路径成功");
        }else{
            NSLog(@"创建失败");
        }

    }
    return 0;
}

//
//  main.m
//  03-文件的移动,删除,拷贝
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        /**
         1.创建文件管理类
         */
        NSFileManager *manager = [NSFileManager defaultManager];

        //拷贝
        /**
         第一个参数:原路径
         第二个参数:现路径  注意:当现路径下面在拷贝前已经有了原路径下的同名文件,就会拷贝失败
         */
        NSString *path1 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/good/text.txt";
        NSString *path2 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/good/text1.txt";

        BOOL isSuc1 = [manager copyItemAtPath:path1 toPath:path2 error:nil];

        if (isSuc1) {
            NSLog(@"拷贝成功");
        }else{
            NSLog(@"失败");
        }

        //移动
        //注意;原路径下的文件消失了,移动到了线路经下面
        NSString *path3 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/good/text.txt";
        NSString *path4 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/good/text1.txt/text.txt";

        BOOL isSuc2 = [manager moveItemAtPath:path3 toPath:path4 error:nil];

        if (isSuc2) {
            NSLog(@"移动成功");
        }else{
            NSLog(@"失败");
        }

        //删除
        BOOL isSuc3 = [manager removeItemAtPath:path4 error:nil];

        if (isSuc3) {
            NSLog(@"删除成功");
        }else{
            NSLog(@"失败");
        }

    }
    return 0;
}

//
//  main.m
//  04-NSData
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        /**
         NSData :表示二进制的数据
         原因:存储,传输的数据都是二进制的。
         */

        NSString *string = @"iOS study";
        //字符串转为NSData类型
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];

        NSLog(@"%@",data);

        //NSData类型转为字符串型
        NSString *newString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@",newString);

    }
    return 0;
}

//
//  main.m
//  05-打开文件的方式
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        /**
        oc打开方法:
         文件句柄(NSFileHandle) :通过文件句柄操作有关文件内容的事情。
         */
        //三种方式:只读,只写,读写
        //只读方式打开文件
        //1.创建句柄
        //NSFileHandle *handle = [[NSFileHandle alloc]init];

        //文件的路径
        NSString *path3 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/方法列表.rtf";

        NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path3];

        if (handle) {
            NSLog(@"文件存在");
        }else{
            NSLog(@"不存在");
        }

        //只写方式打开文件
        NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:path3];

        if (handle2) {
            NSLog(@"文件存在");
        }else{
            NSLog(@"不存在");
        }

        //读写方式打开文件
        NSFileHandle *handle3 = [NSFileHandle fileHandleForUpdatingAtPath:path3];

        if (handle3) {
            NSLog(@"文件存在");
        }else{
            NSLog(@"不存在");
        }

    }
    return 0;
}

//
//  main.m
//  06-读文件内容
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {

        NSString *path3 = @"/Users/qianfeng/Desktop/共享资料/oc第六天/学生资料/方法列表.rtf";
        //只读,不能清空
        NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path3];

        if (handle) {
            NSLog(@"文件存在");
        }else{
            NSLog(@"不存在");
        }
        //length  c的strlen以字节为单位进行打印  oc的length方法以各国的字符为单位
        char *cSr = "iOS好";
        NSString *ocSt = @"iOS好";
        NSLog(@"cSr:%lu,ocSt:%lu",strlen(cSr),[ocSt length]);

        //1.开始进入文件的时候,是从文件的文件首开始读完文件
        //2.第一次读:从开始读length长度的字符
        NSData *data1 = [handle readDataOfLength:10];

        NSLog(@"%@",[[NSString alloc]initWithData:data1 encoding:NSUTF8StringEncoding]);

        //第二次读:以上一次的结尾为开始,读取10个字符
        NSData *data2 = [handle readDataOfLength:10];

         NSLog(@"%@",[[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding]);

        //第三次读 从上一次结束一直读到末尾
        NSData *data3 = [handle readDataToEndOfFile];
        NSLog(@"%@",[[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding]);

        //清空
        //[handle truncateFileAtOffset:0];

        //回到文件的开始(或者某个位置)
        [handle seekToFileOffset:0];

        //只能回到开始
        [handle offsetInFile];

        //到结尾
        [handle seekToEndOfFile];

        //关闭文件(省略)
        [handle closeFile];

    }
    return 0;
}

//
//  main.m
//  07-写文件内容
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        //注意:在写入内容的时候,使用文件路径:1.尽量使用英文命名文件夹 2.后缀名不要使用。rtf
        NSString *path3 = @"/Users/qianfeng/Desktop/testtttt.rtf";
        //只写
        NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:path3];

        if (handle) {
            NSLog(@"文件存在");
        }else{
            NSLog(@"不存在");
        }

        //为了防止将原来的内容覆盖掉,所以1.要先到文件内容的末尾 2.开始写

        //到内容的末尾
        [handle seekToEndOfFile];

        NSData *data = [@"our story" dataUsingEncoding:NSUTF8StringEncoding];

        //写数据  注意:将数据写入缓存
        [handle writeData:data];

        //将数据写入磁盘
        [handle synchronizeFile];

        //关闭文件(可以省略)
        [handle closeFile];
    }
    return 0;
}

//
//  main.m
//  02-NSDateFomtter
//

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
        /**
         NSDateFormatter:时间转换器,作用:以规定的某种格式为标准,将字符串与NSDate类型数据之间进行转化
         */

        //创建一个NSDateFormatter类型的对象
        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

        //@"1985-09-02 23:12:12"
        //确定标准
        //HH表示24小时制  hh表示12小时制
        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

        NSDate *date = [NSDate date];
        //将日期转化为字符串
        NSString *string = [formatter stringFromDate:date];

        NSLog(@"%@",string);

        //字符串转为日期
        NSDate *newDate = [formatter dateFromString:string];

         NSLog(@"%@",newDate);

    }
    return 0;
}
点赞
收藏
暂无评论,快来发表评论吧~
私信
老牛@ilaoniu
老牛,俗称哞哞。单纯的九零后理工小青年。喜欢折腾,爱玩,爱音乐,爱游戏,爱电影,爱旅游...
最后活跃于