oc中文件管理汇总

1,初始化一个NSFileManager 执行文件或文件夹的创建、删除、复制、移动

       NSFileManager *manager = [NSFileManager defaultManager]

 

  1.1创建文件夹   createDirectoryAtPath

       NSError *error = nil;

       BOOL isSuccess = [manager createDirectoryAtPath:@"/Users/ms/Desktop/File/File1/File2" withIntermediateDirectories:YES attributes:nil error:&error];

        if (isSuccess)

        {

            NSLog(@"创建成功");

        }

        else

        {

            NSLog(@"%@",error);

        }

 

1.2删除文件夹  removeItemAtPath

      BOOL isOK = [manager removeItemAtPath:@"/Users/ms/Desktop/File/File1/File2"error:nil];

        if (isOK)

        {

            NSLog(@"删除成功");

        }

        else

        {

            NSLog(@"失败");

        }

 

1.3复制文件夹  ·copyItemAtPath

NSError *error2 = nil;

         BOOL isOK2 = [manager copyItemAtPath:@"/Users/ms/Desktop/File/File1"toPath:@"/Users/ms/Desktop/File1" error:&error2];

        if (isOK2)

        {

            NSLog(@"复制成功");

        }

        else

        {

            NSLog(@"%@",error2);

        }

 

1.4 移动文件夹   moveItemAtPath

       BOOL isOK3 =  [manager moveItemAtPath:@"/Users/ms/Desktop/File" toPath:@"/Users/ms/Desktop/File1 /File"error:nil];

        if (isOK3)

        {

            NSLog(@"复制成功");

        }

        else

        {

            NSLog(@"失败");

        }

 

1.5 求子路径 包含路径下面的子路径    subpathsAtPath

    NSArray *arr=[manager subpathsAtPath:@"/Users/ms/Desktop/File1 "];

        NSLog(@"%@",arr);

        //

        //求子路径(一级路径) 不包含路径下面的子路径

        //参数1 当前路径

        //参数2 错误信息

         NSError *error2 = nil;

        NSArray *arr2 = [manager contentsOfDirectoryAtPath:@"/Users/ms/Desktop/File1 " error:&error2];

        NSLog(@"%@",arr2);

 

1.6 判断当前路径是否存在文件或文件夹   fileExistsAtPath

      BOOL isDirectory;//用于判断是否是文件夹

        BOOL isExit = [manager fileExistsAtPath:@"/Users/ms/Desktop/File1/text.txt" isDirectory:&isDirectory];

        if (isExit)

        {

            NSLog(@"存在");

        }

        else

        {

            NSLog(@"不存在");

        }

        if (isDirectory)

        {

            NSLog(@"是文件夹");

        }

        else

        {

            NSLog(@"是文件");

        }

 

1.7 创建文件 

        参数1   文件路径

        参数2   文件内容  NSData  二进制

        参数3   文件属性

        NSString *str = @"Hello word!";

        将字符串按UTF8格式转化成二进制数据

        NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding ];

        BOOL isExit5 = [manager createFileAtPath:@"/Users/ms/Desktop/File1/aaa.txt" contents:data attributes:nil];

        

        if (isExit5)

        {

            NSLog(@"创建成功");

        }

        else

        {

            NSLog(@"创建失败");

        }

1.8 获取文件夹的属性

  NSDictionary *dict = [manager attributesOfItemAtPath:@"/Users/ms/Desktop/File1" error:nil];

        NSLog(@"%@",dict);

 

 

 

2,通过 NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/ms/Desktop/File1/aaa.txt”]来控制文件的读写        

 

//获取文件句柄有如下方法:

 fileHandleForReadingAtPath:(NSString *)path;    获取可读的句柄

 fileHandleForWritingAtPath:(NSString *)path;    获取可写句柄

 fileHandleForUpdatingAtPath:(NSString *)path;   获取可读写句柄

 

2.1  读取文件内容

NSData *data =[fileHandle readDataToEndOfFile];

        //将二进制转化成UTF-8形式

        NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str);

        

        //设置新的游标位置

        [fileHandle seekToFileOffset:0]

 

2.2 写入内容

NSString *str2=@"*****";

        

        //string-->二进制

        

        NSData *data1 = [str2 dataUsingEncoding:NSUTF8StringEncoding];

        

        [fileHandle writeData:data1]

 

2.3 设置游标的位置

        // seekToFileOffaset

        

    2.4 获取当前文件游标位置

        NSLog(@"%llu",[fileHandle offsetInFile])

 

 

3.归档

3.1字符串归档

        NSString *str = @"ddd";

        //str-->data

        [str dataUsingEncoding:NSUTF8StringEncoding];

        //data-->string

    //   [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]

    3.2 数组

    

        NSArray *arr=@[@"1",@"2"];

        

        //归档类

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];

        NSLog(@"%@",data);

        

        //解档类

        NSArray *arr2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];

        NSLog(@"%@",arr2);

        

        

    3.3 字典

        NSDictionary *dict = @{@"a":@"2"};

        NSData *data2 = [NSKeyedArchiver archivedDataWithRootObject:dict];

        NSDictionary *dict2 = [NSKeyedUnarchiver unarchiveObjectWithData:data2];

        NSLog(@"%@",dict2);

 

  3.4自定义类中的归档

main.m中:

    //定义一个学生对象

        Student *stu = [[Student alloc]init];

        stu.name = @"xiaoming";

        stu.num = 111;

        //归档

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];

        

        //解档

        Student *stu2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];

        

        NSLog(@"%@",stu2.name);

 

Student.h中:

@interface Student : NSObject<NSCoding>

 

@property (nonatomic,strong)NSString *name;

 

@property (nonatomic,assign) int num;

 

Student.m中:

//归档

- void) encodeWithCoder:(NSCoder *)aCoder

{

    

    [aCoder encodeObject:self.name forKey:@"name"];

    [aCoder encodeInt:self.num forKey:@"num"];

}

//解档

- (instancetype)initWithCoder:(NSCoder *)aDecoder

{

    if (self = [super init])

    {

        [aDecoder decodeObjectForKey:@"name"];//必须要和归档的key一致

        [aDecoder decodeIntegerForKey:@"num"];

    }

    return self;

}

 

4在桌面建一个空的MyPlist.plist文件

4.1创建 NSFileManager 对象

         NSFileManager *manager = [NSFileManager defaultManager];

        [manager createFileAtPath:@"/Users/ms/Desktop/MyPlist.plist" contents:nil attributes:nil];

 

    4.2将此字典写入MyPlist.plist的文件

        NSDictionary *dict = @{@"1":@"a",@"2":@"b"};

        //方式1

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dict];

        NSFileHandle *hanle =[NSFileHandle fileHandleForUpdatingAtPath:@"/Users/ms/Desktop/MyPlist.plist"];

       [hanle writeData:data];

        

    4.3读取数据验证

        [hanle seekToFileOffset:0];

        NSData *data1 = [hanle readDataToEndOfFile];

        NSLog(@"%@",[NSKeyedUnarchiver unarchiveObjectWithData:data1]);

 

 

 

posted @ 2016-01-15 09:57  codingsunny  阅读(535)  评论(0编辑  收藏  举报