ios文件操作

1.NSFileManager:单例,对文件进行操作

    [NSFileManager defaultManager]

2.UIImage转NSData

    NSData *imageData = UIImagePNGRepresentation(image);

3.NSHomeDirectory:获取应用的主路径

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/pic"];

4.fileExistsAtPath判断路径下是否存在这个文件

    BOOL isExit = [[NSFileManager defaultManager] fileExistsAtPath:path];

5.createFileAtPath:在路径上创建文件

    [[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];

6.createDirectoryAtPath:在路径上创建目录

    [[NSFileManager defaultManager] createDirectoryAtPath:dir2Path
         withIntermediateDirectories:YES attributes:nil error:nil];

7.将文件转化为NSData

    NSData *data = [NSData dataWithContentsOfFile:path];

8.获得应用的Document目录

    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
        NSUserDomainMask, YES) lastObject];

9.moveItemAtPath:toPath:将第一个路径上的文件移动到另一个路径

    [[NSFileManager defaultManager] moveItemAtPath:path toPath:[dir1Path stringByAppendingPathComponent:@"pic1"]
         error:&errorMsg];

10.copyItemAtPath:toPath:将第一个路径上的文件拷贝粘贴到另一个路径上

    [[NSFileManager defaultManager] copyItemAtPath:[dir1Path stringByAppendingPathComponent:@"pic1"] 
        toPath:[dir2Path stringByAppendingPathComponent:@"pic2"] error:&errorMsg];

11.removeItemAtPath:删除文件

    [[NSFileManager defaultManager] removeItemAtPath:dir1Path error:nil];


小例子:

@interface ViewController ()

@property (nonatomic, strong) NSFileManager *fileManager;

@end

///Users/a/Library/Developer/CoreSimulator/Devices/4DF9F8F0-E0BD-4EFC-AC49-340DAE285D62/data/Containers/Data/Application/77EA378C-8B16-424E-8607-456EAC48EC7A/Documents/pic

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
 
    //获取系统提供文件管理器 单例
    self.fileManager = [NSFileManager defaultManager];
    
    //读取图片
    UIImage *image = [UIImage imageNamed:@"4.jpg"];
    
    //UIImage -> NSData//二进制
    NSData *imageData = UIImagePNGRepresentation(image);
//    NSLog(@"%@", imageData);

    //创建文件
    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/pic"];//添加的是路径的一部分
    NSLog(@"%@", path);
    
    //创建文件
    if (![self.fileManager fileExistsAtPath:path]) {
        //文件不存在
        //创建一个空的文件
        [self.fileManager createFileAtPath:path contents:nil attributes:nil];
        
        //写入内容
        [imageData writeToFile:path atomically:YES];
    }
    
    //读取文件
    if ([self.fileManager fileExistsAtPath:path]) {
        NSData *data = [NSData dataWithContentsOfFile:path];
        
        UIImage *image = [UIImage imageWithData:data];
        self.view.backgroundColor = [UIColor colorWithPatternImage:image];
    }
    
    //创建两个目录:目录1 目录2
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//自动寻找可操作的目录,但是只有一个
//    NSLog(@"%@", dir1Path);
    
    //两个方法不同
    NSString *dir1Path = [docPath stringByAppendingString:@"/目录1"];
    NSString *dir2Path = [docPath stringByAppendingPathComponent:@"目录2"];
//    NSLog(@"%@, %@", dir1Path, dir2Path);
    
//    BOOL *isExist;
    if (![self.fileManager fileExistsAtPath:dir1Path]) {
        //不存在,创建
        [self.fileManager createDirectoryAtPath:dir1Path withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    if (![self.fileManager fileExistsAtPath:dir2Path]) {
        //不存在,创建
        [self.fileManager createDirectoryAtPath:dir2Path withIntermediateDirectories:YES attributes:nil error:nil];
    }
    
    //将Documents/pic 移动到Documents/目录1/pic1,移动的时候还要设置文件名
    NSError *errorMsg = NULL;
    [self.fileManager moveItemAtPath:path toPath:[dir1Path stringByAppendingPathComponent:@"pic1"] error:&errorMsg];
    if (errorMsg) {
        //有错误信息
        NSLog(@"errorMsg:%@", errorMsg);
    }else{
        NSLog(@"move ok");
    }
    
    //将目录1/pic1 拷贝copy 到目录2/pic1
    [self.fileManager copyItemAtPath:[dir1Path stringByAppendingPathComponent:@"pic1"] toPath:[dir2Path stringByAppendingPathComponent:@"pic2"] error:&errorMsg];
    if (errorMsg) {
        //有错误信息
        NSLog(@"errorMsg:%@", errorMsg);
    }else{
        NSLog(@"copy ok");
    }
    
    //删除文件
    [self.fileManager removeItemAtPath:dir1Path error:nil];
}

@end


你可能感兴趣的:(ios文件操作)