iOS-文件操作管理(NSFileManager)

iOS采用沙盒机制, APP只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问
每个沙盒含有3个文件夹:Documents, Library 和 tmp;
其中Library包含Caches、Preferences目录.
  • Documents:苹果建议将程序创建产生的文件以及应用浏览产生的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录;
  • Library:存储程序的默认设置或其它状态信息;
  • Library/Caches:存放缓存文件,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,不会被itunes同步,所以为了减少同步的时间,可以考虑将一些比较大的文件而又不需要备份的文件放到这个目录下;
  • Library/Preferences: 存放偏好设置文件;
  • tmp:提供一个即时创建临时文件的地方,但不需要持久化,在应用关闭后,该目录下的数据将删除,也可能系统在程序不运行的时候清除。

目录


一、获取应用沙盒根路径

- (void)getHomeDirPath {
    NSString *homeDirectory = NSHomeDirectory();
    NSLog(@"%@",homeDirectory);
}

二、获取Documents目录路径

- (void)getDocumentsPath {
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSLog(@"%@",documentDirectory);
}

三、获取Library目录路径

- (void)getLibraryDirPath {
    NSString *libraryDirectory = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
    NSLog(@"%@",libraryDirectory);
}

四、获取Cache目录路径

- (void)getCachePath {
    NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).lastObject;
    NSLog(@"%@",cachePath);
}

五、获取Tmp目录路径

- (void)gettmpPath {
    NSString *tmpPath = NSTemporaryDirectory();
    NSLog(@"%@",tmpPath);
}

六、创建文件夹

- (void)createDirectory {
    // 设置存放位置,这里保存到Document下
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);
    // 判断并创建文件夹
    BOOL result = [fileManager createDirectoryAtPath:testDirectoryPath withIntermediateDirectories:YES attributes:nil error:nil];
    if (result) {
        NSLog(@"文件夹创建成功");
    } else {
        NSLog(@"文件夹创建失败");
    }

}

七、创建文件

- (void)createFile {
    // 设置存放位置,这里保存到Document下
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.plist"];
    BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
    if (result) {
        NSLog(@"文件创建成功");
    } else {
        NSLog(@"文件创建失败");
    }
}

八、写数据到文件

- (void)writeDataToFile {
    // 设置存放位置,这里保存到Document下
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
    NSString *content = @"双十一快到了";
    BOOL result = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    if (result) {
        NSLog(@"数据写入成功");
    } else {
        NSLog(@"数据写入失败");
    }
}

九、读文件数据

- (void)readDataFromFile {
    // 设置文件存放位置
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
    // 方式一
    /*
     NSData *data = [NSData dataWithContentsOfFile:testPath];
     NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
     */
    // 方式二
    NSString *content = [NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil];

    NSLog(@"%@",content);
}

十、读取文件属性

- (void)getFileAttributes {
    // 设置文件存放位置
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];

    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:testPath error:nil];
    NSLog(@"%@",fileAttributes);
    /*
     NSFileCreationDate = "2016-11-02 08:52:34 +0000";      // 文件创建时间
     NSFileModificationDate = "2016-11-02 08:52:34 +0000";  // 文件修改时间
     NSFileSize = 18;                                       // 文件大小
     ...
     */
}

十一、删除文件

- (void)deleteFile {
    // 设置文件存放位置
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL result = [fileManager removeItemAtPath:testPath error:nil];
    if (result) {
        NSLog(@"数据删除成功");
    } else {
        NSLog(@"数据删除失败");
    }
}

十二、移动文件

- (void)moveFile {
    // 设置存放位置,这里保存到Document下
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.plist"];
    BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
    if (result) {
        NSLog(@"文件创建成功");
    } else {
        NSLog(@"文件创建失败");
    }

    NSString *content = @"双十一快到了";
    BOOL writeResult = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    if (writeResult) {
        NSLog(@"数据写入成功");
    } else {
        NSLog(@"数据写入失败");
    }

    NSString *otherDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test.txt"];

    BOOL moveResult = [fileManager moveItemAtPath:testPath toPath:otherDirectoryPath error:nil];
    if (moveResult) {
        NSLog(@"文件移动成功");
    } else {
        NSLog(@"文件移动失败");
    }
}

十三、复制文件

- (void)copyFile {
    // 设置存放位置,这里保存到Document下
    NSString *documentDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;
    NSString *testDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test"];
    NSLog(@"%@",testDirectoryPath);

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *testPath = [testDirectoryPath stringByAppendingPathComponent:@"test.txt"];
    BOOL result = [fileManager createFileAtPath:testPath contents:nil attributes:nil];
    if (result) {
        NSLog(@"文件创建成功");
    } else {
        NSLog(@"文件创建失败");
    }

    NSString *content = @"双十一快到了";
    BOOL writeResult = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    if (writeResult) {
        NSLog(@"数据写入成功");
    } else {
        NSLog(@"数据写入失败");
    }

    NSString *otherDirectoryPath = [documentDirectory stringByAppendingPathComponent:@"test.txt"];

    BOOL moveResult = [fileManager copyItemAtPath:testPath toPath:otherDirectoryPath error:nil];
    if (moveResult) {
        NSLog(@"文件复制成功");
    } else {
        NSLog(@"文件复制失败");
    }
}

十四、计算文件大小

- (long long)fileSizeAtPath:(NSString *)path {
    NSFileManager *fileManager = [NSFileManager defaultManager];

    if ([fileManager fileExistsAtPath:path]) {
        long long size = [fileManager attributesOfItemAtPath:path error:nil].fileSize;
        return size;
    }

    return 0;
}

十五、计算文件夹大小

- (long long)folderSizeAtPath:(NSString *)path {

    NSFileManager *fileManager = [NSFileManager defaultManager];

    long long folderSize = 0;

    if ([fileManager fileExistsAtPath:path])
    {
        NSArray *childerFiles = [fileManager subpathsAtPath:path];
        for (NSString *fileName in childerFiles)
        {
            NSString *fileAbsolutePath = [path stringByAppendingPathComponent:fileName];
            if ([fileManager fileExistsAtPath:fileAbsolutePath])
            {
                long long size = [fileManager attributesOfItemAtPath:fileAbsolutePath error:nil].fileSize;
                folderSize += size;
            }
        }
    }

    return folderSize;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值