美文网首页
iOS应用程序沙盒路径

iOS应用程序沙盒路径

作者: 学不会灬 | 来源:发表于2016-02-16 16:54 被阅读243次
    在开发中,我们常常需要得到应用程序沙盒的路径。总结出来。
    直接贴代码:
    //获得应用程序沙盒的Documents文件夹路径**
    NSArray *arrDocumentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *documentPath = [arrDocumentPathsobjectAtIndex:0];
    NSLog(@"Documents path: %@",documentPath);
    
    **//获得应用程序沙盒的Caches文件夹路径**
    NSArray*arrCachesPaths=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES);
    NSString*CachesPath=[arrCachesPathsobjectAtIndex:0];
    NSLog(@"Caches path: %@",CachesPath);
    
    //获得应用程序沙盒的Downloads文件夹路径
    NSArray*arrDownloadPaths=NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory,NSUserDomainMask,YES);
    NSString*loadPathsPath=[arrDownloadPathsobjectAtIndex:0];
    NSLog(@"Downloads path: %@",loadPathsPath);
    
    //获得应用程序沙盒的home文件夹路径**
    NSString*homePath=NSHomeDirectory();
    
    //获得应用程序沙盒的tmp文件夹路径**
    NSString*TmpPath=NSTemporaryDirectory();
    
    //将文件写入到指定程序沙盒的指定文件夹中**
    NSString *fileName =  [homePathstringByAppendingPathComponent:@"myFile"];
    
    NSString *content = @"a";
    
    NSData *contentData = [contentdataUsingEncoding:NSUTF8StringEncoding];
    
    if([contentDatawriteToFile:fileNameatomically:YES]) {
        NSLog(@"写入成功");
    }
    

    NSFileManager是一个单列类,也是一个文件管理器。可以通过NSFileManager创建文件夹、创建文件、写文件、读文件内容等等基本功能。

    下面将介绍NSFileManager文件操作的十个小功能。我们在Documents里面进行举例,首先是获取Documents的路径。

    获取Documents路径方法如下:
    - (NSString *)getDocumentsPath
    {
      //获取Documents路径
      NSArray *paths =     NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      NSString *path = [paths objectAtIndex:0];
      NSLog(@"path:%@", path);
      return path;
    }
    
    创建文件夹
    -(void)createDirectory{
        NSString *documentsPath =[self getDocumentsPath];
    
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        NSString *iOSDirectory = [documentsPath stringByAppendingPathComponent:@"iOS"];
    
        BOOL isSuccess = [fileManager createDirectoryAtPath:iOSDirectory withIntermediateDirectories:YES attributes:nil error:nil];
    
        if (isSuccess) {
            NSLog(@"success");
        } else {
            NSLog(@"fail");
        }
    }
    
    创建文件
    -(void)createFile{
        NSString *documentsPath =[self getDocumentsPath];
    
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
    
        BOOL isSuccess = [fileManager createFileAtPath:iOSPath contents:nil attributes:nil];
    
        if (isSuccess) {
            NSLog(@"success");
        } else {
            NSLog(@"fail");
        }
    }
    
    写文件
    -(void)writeFile{
        NSString *documentsPath =[self getDocumentsPath];
        NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
        NSString *content = @"我要写数据啦";
        BOOL isSuccess = [content writeToFile:iOSPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
        if (isSuccess) {
            NSLog(@"write success");
        } else {
            NSLog(@"write fail");
        }
    }
    
    读取文件内容
    -(void)readFileContent{
        NSString *documentsPath =[self getDocumentsPath];
        NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
        NSString *content = [NSString stringWithContentsOfFile:iOSPath encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"read success: %@",content);
    }
    
    判断文件是否存在
    - (BOOL)isSxistAtPath:(NSString *)filePath{
        NSFileManager *fileManager = [NSFileManager defaultManager];
        BOOL isExist = [fileManager fileExistsAtPath:filePath];
        return isExist;
    }
    
    计算文件大小
    - (unsigned long long)fileSizeAtPath:(NSString *)filePath{
         NSFileManager *fileManager = [NSFileManager defaultManager];
         BOOL isExist = [fileManager fileExistsAtPath:filePath];
        if (isExist){
            unsigned long long fileSize = [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize];
            return fileSize;
        } else {
            NSLog(@"file is not exist");
            return 0;
        }  
    }
    
    计算整个文件夹中所有文件大小
    - (unsigned long long)folderSizeAtPath:(NSString*)folderPath{
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        BOOL isExist = [fileManager fileExistsAtPath:folderPath];
    
        if (isExist){
            NSEnumerator *childFileEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator];
    
            unsigned long long folderSize = 0;
            NSString *fileName = @"";
            while ((fileName = [childFileEnumerator nextObject]) != nil){
                    NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
                    folderSize += [self fileSizeAtPath:fileAbsolutePath];
            }
            return folderSize / (1024.0 * 1024.0);
        } else {
          NSLog(@"file is not exist");
          return 0;
        }
    }
    
    删除文件
    -(void)deleteFile{
    NSString *documentsPath =[self getDocumentsPath];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *iOSPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
    BOOL isSuccess = [fileManager removeItemAtPath:iOSPath error:nil];
    if (isSuccess) {
    NSLog(@"delete success");
    }else{
    NSLog(@"delete fail");
    }
    }
    
    移动文件
    - (void)moveFileName
    {
        NSString *documentsPath =[self getDocumentsPath];
    
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
    
        NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
    
        BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];
    
        if (isSuccess) {
            NSLog(@"rename success");
        }else{
            NSLog(@"rename fail");
        }
    }
    
    重命名
    - (void)renameFileName
    {
        //通过移动该文件对文件重命名
        NSString *documentsPath =[self getDocumentsPath];
    
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        NSString *filePath = [documentsPath stringByAppendingPathComponent:@"iOS.txt"];
    
        NSString *moveToPath = [documentsPath stringByAppendingPathComponent:@"rename.txt"];
    
        BOOL isSuccess = [fileManager moveItemAtPath:filePath toPath:moveToPath error:nil];
    
        if (isSuccess) {
            NSLog(@"rename success");
        }else{
            NSLog(@"rename fail");
        }
    }
    ```

    相关文章

      网友评论

          本文标题:iOS应用程序沙盒路径

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