iOS沙盒路径

//    iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.

//    documentstmpappLibrary

//    (NSHomeDirectory())手动保存的文件在documents文件里

//    Nsuserdefaults保存的文件在tmp文件夹里

//    1Documents 目录:您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。

//    2AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。

//    3Library 目录:这个目录下有两个子目录:Caches Preferences

//    Preferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.

//    Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。

//    4tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

//    获取这些目录路径的方法:

//    1,获取家目录路径的函数

//    NSString *homeDir = NSHomeDirectory();

////    2,获取Documents目录路径的方法

//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//    NSString *docDir = [paths objectAtIndex:0];

////    3,获取Caches目录路径的方法:

//    NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

//    NSString *cachesDir = [paths objectAtIndex:0];

////    4,获取tmp目录路径的方法:

//    NSString *tmpDir = NSTemporaryDirectory();

读写

//1.
 NSString *documentPathStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
//2.
NSString *str = @"hello world";
//3.
NSString *strPath = [documentPathStr stringByAppendingPathComponent:@"str.mp4"];
或者 NSString *newPath = [documentPath stringByAppendingString:@"/123.txt"];
//4.
[str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

其他的简单对象如NSArray,NSDictionary,NSData的步骤基本类似.
#数组
 NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
    NSArray *array = @[@"A",@"B",@"C"];

    NSString *newPath = [documentPath stringByAppendingPathComponent:@"/eqw.txt"];
    [array writeToFile:newPath atomically:YES];

    NSLog(@"*********%@",newPath);
#字典
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSDictionary *dict = @{@"张三":@"name",@"男":@"gender"};
    NSString *newPath = [documentPath stringByAppendingString:@"/zhangsan.txt"];
    [dict writeToFile:newPath atomically:YES];
    NSLog(@"********%@",newPath);

    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:newPath];
    NSLog(@"%@",dic);
#NSData类型
NSData类型稍微麻烦一点,需要转化为相应的格式
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    UIImage *iamge = [UIImage imageNamed:@"1.jpg"];
//第二个参数为压缩系数
    NSData *data = UIImageJPEGRepresentation(iamge, 1);

    NSString *pathFile = [documentPath stringByAppendingString:@"/7898.jpg"];
    [data writeToFile:pathFile atomically:YES];

    NSLog(@"%@",pathFile);

    UIImage *newImage = [[UIImage alloc]initWithData:data];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:newImage];
    [self.view addSubview:imageView];

######读取

//NSString
NSString *newStr = [NSString stringWithContentsOfFile:documents encoding:4 error:nil];
    NSLog(@"%@",newStr);
//NSArray
NSArray *NewArr = [NSArray arrayWithContentsOfFile:arrPath];
    NSLog(@"数组内容:%@",NewArr);
//NSDictionary
NSDictionary *newDic = [NSDictionary dictionaryWithContentsOfFile:DicPath];
    NSLog(@"字典内容:%@",newDic);

文件管理器

    //1.初始化一个NSFileManager对象(使用单例)
    NSFileManager *manager = [NSFileManager defaultManager];
    //2.获取根路径
    NSString *rootPath = NSHomeDirectory();
    //3.创建文件
    rootPath = [rootPath stringByAppendingPathComponent:@"/Documents/man"];
    //4.创建目录
     //createDirectoryAtPath:文件路径
********withIntermediateDirectories:是否在当前路径下创建/text/myApp
    [manager createDirectoryAtPath:rootPath withIntermediateDirectories:YES attributes:nil error:nil];
    //添加并写入
    rootPath = [rootPath stringByAppendingPathComponent:@"/string.txt"];
    NSString *str = @"12345";
    [str writeToFile:rootPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
#或者可以使用另一种比较简单的创建方法
//初始化一个NSFileManager对象
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *secondPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject] stringByAppendingString:@"secondPathString.txt"]
    NSString *stringContent = @"12345";
    //第二个参数为文件的内容,由于是NSData类型,所以需要转化
    [fileManager createFileAtPath:secondPath contents:[stringContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
可以使用一个BOOL类型的对象接收,判断是否成功.
   #pragma mark ---- 文件管理 复制 ----  
     //创建另一个路径,然后复制
[fileManager createFileAtPath:secondPath contents:[stringContent dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
    NSString *copyPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject]stringByAppendingString:@"copyPathString.txt"];
    BOOL result = [manager copyItemAtPath:secondPath toPath:copyPath error:nil];
    if (result) {
        NSLog(@"成功");
    }else{
        NSLog(@"失败啦!!!");
    }
####注意,创建另一个路径的时候,只创建路径即可,不要创建出文件,不然会失败的..

#pragma Mark ---  文件管理 删除  ---
    //移除的是创建的文件,并不是存放的文件夹
    [FileManager removeItemAtPath:rootPath error:nil];

    NSLog(@"移除后路径:%@",rootPath);

 

 

 

 

 

原文地址:https://www.cnblogs.com/daxueshan/p/5852299.html