文件管理 NSFileManager


#import "ViewController.h"

@interface ViewController ()
{
    NSFileManager *_manager;
    NSString *_document;
    NSString *_str;
    NSData *_data;
    NSString *_path;
}

@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //一个应用程序对应一个沙盒目录 当前应用程序只能访问自己的沙盒目录,不能访问其他应用程序的沙盒目录
    //Documents: 存放永久化数据文件
    //Library: 存放系统的大型文件(永久) 和缓存数据-cache
    //Tmp: 存放临时性文件,应用程序重新启动将销毁所有数据

    //获取沙盒目录
    NSString *homePath=NSHomeDirectory();
    _document=[homePath stringByAppendingPathComponent:@"Documents"];


    //文件管理
    _manager=[NSFileManager defaultManager];

    //创建一个文件
    //编辑文件内部的文件
    _str=@"你好大神";

    _data=[_str dataUsingEncoding:NSUTF8StringEncoding];

    //创建文件存储路径
    _path=[_document stringByAppendingPathComponent:@"test.tst"];

    //创建文件
    [self creatFile];

    //创建文件夹
    [self creatDirectory];

    //读取文件内容
    [self readFile];

    //文件的属性
    [self propertiOfFile];

    //文件的 复制 剪切 删除
    [self changeFile];
    //通过路径在 Finder 上查找文件是否创建成功

}


- (void)creatFile{

    //创建文件 如果重复创建会覆盖原文件;
    BOOL isSuc=[_manager createFileAtPath:_path contents:_data attributes:nil];

    if (isSuc) {
        NSLog(@"文件创建成功");
    }

}

- (void)creatDirectory{

    BOOL isSuc=[_manager createDirectoryAtPath:[_document stringByAppendingString:@"/test2"] withIntermediateDirectories:YES attributes:nil error:nil];

    if (isSuc) {
        NSLog(@"文件夹创建成功");
    }
}

- (void)readFile{

    NSData *data=[_manager contentsAtPath:_path];

    NSString *str1=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"str1 is:%@",str1);

    //这个方法已经被弃用了
    NSString *str2=[NSString stringWithContentsOfFile:_path];
    NSLog(@"str2 is:%@",str2);

}

- (void)changeFile{
    //复制文件
    BOOL isCopy=[_manager copyItemAtPath:_path toPath:[_document stringByAppendingString:@"/test22/test.txt"] error:nil];
    if (isCopy) {
        NSLog(@"复制成功");
    }

    //剪切文件
    BOOL isSuc=[_manager moveItemAtPath:_path toPath:[_document stringByAppendingPathComponent:@"test2/test1.txt"] error:nil];

    if (isSuc) {
        NSLog(@"移动成功");
    }

    BOOL isDelete=[_manager removeItemAtPath:_path error:nil];

    if (isDelete) {
        NSLog(@"删除成功");
    }


}

- (void)propertiOfFile{

    //获取出来的文件的属性有很多 以字典的形式存储
    NSDictionary *attributes=[_manager attributesOfItemAtPath:_path error:nil];

    NSLog(@"attributes is:%@",attributes);

    //计算 document 中的文件总大小
    //获取当前文件夹下的所有子文件 的到的是子文件的相对路径
    NSArray *subPaths=[_manager subpathsAtPath:_document];
    NSLog(@"subPaths is:%@",subPaths);

    NSInteger totalSize=0;
    for (NSString *path in subPaths) {
        //将得到的相路径拼接成绝对路径
        NSString *subPath=[_document stringByAppendingPathComponent:path];

        //获取子文件的属性
        NSDictionary *subFileAttributes=[_manager attributesOfItemAtPath:subPath error:nil];

        //NSFileSize 是系统给带的字符串 相当于@"NSFileSize"
        NSNumber *size=[subFileAttributes objectForKey:NSFileSize];

        totalSize +=[size integerValue];
    }

    NSLog(@"totalSize is:%ld",totalSize);

}

@end

你可能感兴趣的:(文件管理)