iOS NSFileManager 文件管理常用方法介绍

简介

特点
  • 1.NSFileManager是一个单例,相当于全局变量.
  • 2.NSFileManager用来管理和操作沙盒中的文件和文件夹.
  • 3.每个路径名都是一个NSString对象.
  • 4.可对文件或文件夹进行创建/删除/复制/粘贴等操作.
建议使用场景

管理沙盒中的文件或文件夹.

常用方法
image.png
//
//  UIViewController+FileManager.m
//  myview
//
//  Created by mingzhou wang on 2022/4/30.
//

#import "UIViewController+FileManager.h"
@implementation UIViewController (FileManager)

#pragma mark -- 创建文件的路径
-(NSString*)createFilePath:(NSString*)fileName{
    NSString * filePathString = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    return [NSString stringWithFormat:@"%@/%@",filePathString,fileName];
}
#pragma mark 创建文件
-(void)createFile:(NSString*)fileString{
    /**
     创建文件
     @parm createFileAtPath 文件的路径
     @parm contents 文件创建时写入的内容,可为nil
     @parm attributes 文件的属性,可为nil
     */
    BOOL isFile = [[NSFileManager defaultManager] createFileAtPath:[self createFilePath:fileString] contents:nil attributes:nil];
    if (!isFile) {
        NSLog(@"创建失败");
        return;
    }
    /**
     判断文件是否存在
     */
    [self judgeObjectExistence:[self createFilePath:@"NetWork小贱.plist"]];
}
 
 
#pragma mark -- 创建文件夹
-(void)createFolder:(NSString*)folderString{
    /**
     创建文件夹
     
     @parm path 创建文件夹的路径
     @parm createIntermediates 是否展开文件夹的中间目录
     @parm attributes 是创建文件夹设置的属性,可为nil
     @parm error 创建文件夹返回的错误对象,可为nil
     */
    NSError * error = nil;
    BOOL isFolder = [[NSFileManager defaultManager] createDirectoryAtPath:[self createFilePath:folderString] withIntermediateDirectories:YES attributes:nil error:&error];
    if (!isFolder) {
        NSLog(@"createFolder_error:%@",error);
        return;
    }
    /**
     判断文件夹是否存在
     */
    [self judgeObjectExistence:[self createFilePath:@"NetWork"]];
}
 
 
#pragma mark -- 判断文件是否存在
-(void)judgeObjectExistence:(NSString*)objectPath{
    /**
     判断文或者文件夹
     BOOL Existence = [fileManager fileExistsAtPath:objectPath isDirectory:YES];
     */
    BOOL isExistence = [[NSFileManager defaultManager] fileExistsAtPath:objectPath];
    if (!isExistence) {
        NSLog(@"不存在");
        return;
    }
    /**
     判断文件或者文件夹是否可读
     */
    [self judgeObjectReadJurisdiction:objectPath];
    /**
     判断文件或者文件夹是否可写权限
     */
    [self judgeObjectWritJurisdiction:objectPath];
    /**
     判断文件是否是可执行文件
     */
    [self judgeObjectExecutJurisdiction:objectPath];
    /**
     判断是否是可删除的对象
     */
    [self judgeObjectDeletJurisdiction:objectPath];
    /**
     获取可视化的文件字符串
     */
    [self getVisualizationFileString:objectPath];
}
 
 
#pragma mark -- 判断对象的权限是否可读
-(void)judgeObjectReadJurisdiction:(NSString*)objectPath{
    /**
     判断对象是否有可读权限
     @parm path 对象路径
     */
    BOOL isRead = [[NSFileManager defaultManager] isReadableFileAtPath:objectPath];
    if (!isRead) {
        NSLog(@"没有可读权限");
    }
}
 
 
#pragma mark -- 判断对象是否有可写的权限
-(void)judgeObjectWritJurisdiction:(NSString*)objectPath{
    /**
     判断对象是否有可写权限
     @parm path 对象路径
     */
    BOOL isWrit = [[NSFileManager defaultManager] isWritableFileAtPath:objectPath];
    if (!isWrit) {
        NSLog(@"没有可写权限");
    }
}
 
 
#pragma mark -- 判断是否是可执行文件
-(void)judgeObjectExecutJurisdiction:(NSString*)objectPath{
    /**
     判断是否是可执行文件
     @parm path 对象路径
     知识:
     可执行文件 (executable file) 指的是可以由操作系统进行加载执行的文件。
     */
    BOOL isExecut = [[NSFileManager defaultManager] isExecutableFileAtPath:objectPath];
    if (!isExecut) {
        NSLog(@"不是可执行文件");
    }
}
 
 
#pragma mark -- 判断文件或者文件夹是否可以删除
-(void)judgeObjectDeletJurisdiction:(NSString*)objectPath{
    /**
     判断是否是可可删除的对象
     @parm path 对象路径
     */
    BOOL isDelet = [[NSFileManager defaultManager] isDeletableFileAtPath:objectPath];
    if (!isDelet) {
        NSLog(@"不可删除的对象");
    }
}
 
 
#pragma mark 文件数据的写入
-(void)writeToFile:(NSString*)content path:(NSString*)path{
    NSData * data = [content dataUsingEncoding:NSUTF8StringEncoding];
    BOOL isFinish = [data writeToFile:path atomically:YES];
    if (!isFinish) {
        NSLog(@"写入失败");
    }
}
 
 
#pragma mark --  判断两个文件内容是否相等
-(void)fileContentComparison{
    /**
     测试文件内容是否相等
     */
    NSArray * contentArray = @[@"清明时节雨纷纷",@"路上行人欲断魂",@"成功QQ吧",@"成功QQ吧"];
    NSArray * fileNameArray = @[@"cg_a.txt",@"cg_b.txt",@"cg_c.txt",@"cg_d.txt"];
    /**
     创建文件,并写入数据
     */
    for (unsigned int i =0 ; i

你可能感兴趣的:(iOS NSFileManager 文件管理常用方法介绍)