美文网首页
iOS 沙盒文件操作封装

iOS 沙盒文件操作封装

作者: 邓布利多教授 | 来源:发表于2020-09-05 17:23 被阅读0次

对沙盒路径下文件操作的简单封装,先上源码,再介绍使用方式,真的超级简单。

源码

  • .h
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface LYFileTools : NSObject

/**
 文件写入
 */
+(BOOL)fileWriteWithFilename:(NSString *)fileName data:(NSData *)data;

/**
 文件删除
 */
+(BOOL)fileDeleteWithFilename:(NSString *)fileName;
+(void)fileAllDeleteAtPath;

/**
 文件查找
 */
+(BOOL)fileFindAtPath:(NSString*)fileName;

/**
 文件读取
 */
+(NSString *)fileReadWithFilename:(NSString *)fileName;

@end

NS_ASSUME_NONNULL_END

  • .m
#import "LYFileTools.h"

@implementation LYFileTools

#pragma mark - 文件写入
+(BOOL)fileWriteWithFilename:(NSString *)fileName data:(NSData *)data{
    
    NSString *path = [self fileExisted];
    
    //判断文件路径是否存在,存在时查找对应的文件,否则返回NO
    if ([path isEqualToString:@""]) {
        return NO;
    }else{
        
        //文件路径存在,写入数据
        NSString *filePath = [path stringByAppendingPathComponent:fileName];
        [data writeToFile:filePath atomically:YES];
        return YES;
        
    }
    
}

#pragma mark - 文件删除
+(BOOL)fileDeleteWithFilename:(NSString *)fileName{
    
    NSString *path = [self fileExisted];
    
    //判断文件路径是否存在,存在时查找对应的文件,否则返回NO
    if ([path isEqualToString:@""]) {
        return NO;
    }else{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        return [fileManager removeItemAtPath:[path stringByAppendingFormat:@"/%@",fileName] error:nil];
    }
    
}

+(void)fileAllDeleteAtPath{
    
    NSString *path = [self fileExisted];
    
    //判断文件路径是否存在,存在时查找对应的文件,否则return
    if ([path isEqualToString:@""]) {
        return;
    }else{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager removeItemAtPath:path error:nil];
    }
    
}

#pragma mark - 文件查找
+(BOOL)fileFindAtPath:(NSString*)fileName{
    
    NSString *path = [self fileExisted];
    
    if ([path isEqualToString:@""]) {
        return NO;
    }else{

        NSFileManager *fileManager = [NSFileManager defaultManager];
        //全部文件名
        NSArray *tempArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
        
        for (NSString *name in tempArray) {
            if ([fileName isEqualToString:name]) {
                return YES;
            }
        }
        return NO;
        
    }
    
}

#pragma mark - 文件读取
+(NSString *)fileReadWithFilename:(NSString *)fileName{
    
    NSString *path = [self fileExisted];
    
    if ([path isEqualToString:@""]) {
        return @"";
    }else{
        
        NSFileManager *fileManager = [NSFileManager defaultManager];
        //全部文件名
        NSArray *tempArray = [fileManager contentsOfDirectoryAtPath:path error:nil];
        
        for (NSString *name in tempArray) {
            if ([fileName isEqualToString:name]) {
                return [path stringByAppendingFormat:@"/%@",fileName];
            }
        }
        return @"";
    }
    
}


#pragma mark - 文件路径是否存在
+(NSString *)fileExisted{
    
    NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
    NSString *fileCaches = [NSString stringWithFormat:@"%@/FileCaches", path];
    
    BOOL isDir = NO;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    //是否存在该文件目录
    BOOL existed = [fileManager fileExistsAtPath:fileCaches isDirectory:&isDir];
    
    BOOL create = NO;//文件创建是否成功
    //文件目录不存在,创建文件
    if ( !isDir && !existed) {
        create = [fileManager createDirectoryAtPath:fileCaches withIntermediateDirectories:YES attributes:nil error:nil];
    }else{
        create = YES;
    }

    //文件路径存在时,返回正确路径,否则返回空字符串
    if (create) {
        return fileCaches;
    }else{
        return @"";
    }
    
}

@end

使用介绍

  • 文件写入
NSData *data = [@"abcdefg" dataUsingEncoding:NSUTF8StringEncoding];
[LYFileTools fileWriteWithFilename:@"string" data:data];
  • 文件读取,读取方式和写入方式要对应
NSString *path = [LYFileTools fileReadWithFilename:@"string"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSString *content = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"content = %@",content);
  • 查找文件是否存在
[LYFileTools fileFindAtPath:@"string"];
  • 删除指定文件
[LYFileTools fileDeleteWithFilename:@"string"];
  • 全部删除
[LYFileTools fileAllDeleteAtPath];

全剧终

相关文章

  • iOS 沙盒文件操作封装

    对沙盒路径下文件操作的简单封装,先上源码,再介绍使用方式,真的超级简单。 源码 .h .m 使用介绍 文件写入 文...

  • 沙盒存储操作

    // 沙盒存储操作 /**每个iOS程序都有自己的文件系统目录,就是沙盒,并且与其他文件系统、其他应用程序隔离,并...

  • iOS 数据持久化知识汇总(1)—————存储路径

    一、沙盒和沙盒存储路径 1、沙盒是什么 iOS 每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录 。所...

  • iOS开发-隐私权限

    背景 iOS的安全机制——沙盒限制了应用程序执行各种操作的权限。沙盒实际就是程序的系统文件目录,非代码文件都在此保...

  • 【IOS开发基础系列 整理】IOS沙盒机制专题

    整理自如下文章: iOS学习之iOS沙盒(sandbox)机制和文件操作(一) http://blog.csdn....

  • 沙盒

    一、iOS沙盒机制介绍(1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 ...

  • 使用沙盒的正确姿势

    在学习iOS存储方法之前,先了解一下iOS存储机制——沙盒应用沙盒机制:每个iOS应用都有自己的应用沙盒(文件系统...

  • 本地持久化存储

    一、沙盒机制 沙盒是什么 每个iOS应用都有属于自己的应用沙盒(沙盒就是文件系统目录),与其他文件系统隔离,每个应...

  • iOS本地数据存取

    应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒...

  • iOS-数据持久化存储

    一. 沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录)与其他文件系统隔离,应⽤必须待在⾃己的沙盒...

网友评论

      本文标题:iOS 沙盒文件操作封装

      本文链接:https://www.haomeiwen.com/subject/xasfektx.html