`
百合不是茶
  • 浏览: 354108 次
社区版块
存档分类
最新评论

NSFileHandler和沙盒模式

阅读更多

沙盒模式下的文件路径:

 

   

-(void)getSystemFilePath{
    
    //沙盒所在的根目录
    NSString *homeDirectory = NSHomeDirectory();
    NSLog(@"path:%@", homeDirectory);
    
    //应用程序路径
    NSString*appPath = [[NSBundle mainBundle] resourcePath];
    NSLog(@"path:%@", appPath);
    
    //document目录
    NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPaths = [docPaths objectAtIndex:0];
    NSLog(@"path:%@", documentPaths);
    
    //Cache目录
    NSArray *cacPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cachePath = [cacPaths objectAtIndex:0];
    NSLog(@"%@", cachePath);
    
    //获取Library目录
    NSArray *libPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
    NSString *libraryPath = [libPaths objectAtIndex:0];
    NSLog(@"%@", libraryPath);
    
    //获取Tmp目录
    NSString *tmpDir = NSTemporaryDirectory();
    NSLog(@"%@", tmpDir);
    
    
    
}

运行结果:

 

 

homeDirectory:/Users/baihe

appPath:/Users/baihe/Library/Developer/Xcode/DerivedData/FileManage-bsjiooyzykamvnfrvtvuuejgiufb/Build/Products/Debug

documentPaths:/Users/baihe/Documents

cachePath:/Users/baihe/Library/Caches

libraryPath:/Users/baihe/Library

tmpDir:/var/folders/gg/cc6n2tms01j48j3l9g6sph100000gp/T/

 

 

文件的读取:

#pragma mark NSFileHandler和NSFileManager读取文件

-(void)readToFile{
    
    
    NSFileManager *fm=[NSFileManager defaultManager];
    
    //读取沙盒文件
   NSArray *sorecePath= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
   NSString *filePath= [sorecePath objectAtIndex:0];
    
    filePath=[filePath stringByAppendingPathComponent:@"text_list22.txt"];
    
    NSLog(@"文件路径%@",filePath);

    if ([fm fileExistsAtPath:filePath ]) {
        NSLog(@"读取文件存在");
        
        NSFileHandle *inFile=[NSFileHandle fileHandleForReadingAtPath:filePath];
        
        //偏移量
        
//        NSUInteger len=[[inFile availableData]length];
//        
//        [inFile seekToFileOffset:len/2];
        
        NSData *readData=[inFile readDataToEndOfFile];
        
        NSLog(@"readData=%@",[[NSString alloc]initWithData:readData encoding:NSUTF8StringEncoding]);
        
        [inFile closeFile];
        
        [self getSystemFilePath];
        
    }else{
    
        NSLog(@"读取文件不存在");
    }
    
}

 

 

write文件

-(void)writeToFile{
    
    
    NSFileManager* fm=[NSFileManager defaultManager];//文件进行的操作以及文件信息的获取
    
    //查找文件
    NSArray *directoryPaths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
    //查询文件 0表示document下的文件
    NSString *documentDirectory =[directoryPaths objectAtIndex:0];
    
    //查找的文件名
    NSString* fileName =[documentDirectory stringByAppendingPathComponent:@"text_list22.txt"];
    
    NSLog(@"文件路径:%@",fileName);
    
    if (![fm fileExistsAtPath:fileName]) {
        
        NSLog(@"文件路径不存在:%@",fileName);
        
    }else{
        
        BOOL b=[fm createFileAtPath:fileName contents:nil attributes:nil];
        if (b) {
            NSLog(@"文件创建成功");
        }else{
            NSLog(@"文件创建失败");
        }
        
    }
    
     NSFileHandle *outfile=[NSFileHandle fileHandleForWritingAtPath:fileName];//主要是对文件内容进行读取和写入操作
     NSString *buffer=@"object-c";
    [ outfile truncateFileAtOffset:0]; //将输出文件的长度设为0
    
//    NSFileHandle *outfile=[NSFileHandle fileHandleForUpdatingAtPath:fileName];
//    [outfile seekToEndOfFile];//将节点跳到文件的末尾
//    NSString *buffer=@"中文";

    [outfile writeData:[buffer dataUsingEncoding:NSUTF8StringEncoding]];  //写入输入
    
    [outfile closeFile];
    
}

 

 

NSFileHandler常用方法:

+ (id)fileHandleForReadingAtPath:(NSString *)path  打开一个文件准备读取     

+ (id)fileHandleForWritingAtPath:(NSString *)path  打开一个文件准备写入   

+ (id)fileHandleForUpdatingAtPath:(NSString *)path  打开一个文件准备更新  

-  (NSData *)availableData; 从设备或通道返回可用的数据            

-  (NSData *)readDataToEndOfFile; 从当前的节点读取到文件的末尾               

-  (NSData *)readDataOfLength:(NSUInteger)length; 从当前节点开始读取指定的长度数据                           

-  (void)writeData:(NSData *)data; 写入数据         

-  (unsigned long long)offsetInFile;  获取当前文件的偏移量            

-  (void)seekToFileOffset:(unsigned long long)offset; 跳到指定文件的偏移量     

-  (unsigned long long)seekToEndOfFile; 跳到文件末尾        

-  (void)truncateFileAtOffset:(unsigned long long)offset; 将文件的长度设为offset字节

-  (void)closeFile;  关闭文件

 

 

NSFileManage常用方法

-(NSData *)contentsAtPath:path	从path所代表的文件中读取数据
-(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr	将数据写入文件
-(BOOL)removeFileAtPath:path handler:handler	将path所代表的文件删除
-(BOOL)movePath:from toPath:to handler:handler	移动或者重命名文件,to所代表的文件不能是已经存在的文件
-(BOOL)copyPath:from toPath:to handler:handler	复制文件,to所代表的文件不能是已经存在的文件
-(BOOL)contentsEqualAtPath:path1 andPath:path2	比较path1和path2所代表的文件
-(BOOL)fileExistsAtPath:path	检查path所代表的文件是否存在
-(BOOL)isReadableFileAtPath:path	检查path所代表的文件是否存在、是否可读
-(BOOL)isWritableFileAtPath:path	检查path所代表的文件是否存在、是否可写
-(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag	获取path所代表的文件属性
-(BOOL)changeFileAttributes:attr atPath:path	改变文件属性

 

//使用方法如下:

 
        NSFileManager *fm=[NSFileManager defaultManager];
        //读取沙盒文件
        NSArray *sorecePath= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        
        NSString *filePath= [sorecePath objectAtIndex:0];
        
        filePath=[filePath stringByAppendingPathComponent:@"text_list22"];
        
        [fm removeItemAtPath:filePath error:nil];//移除文件.
        [fm createDirectoryAtPath:filePath withIntermediateDirectories:YES
                       attributes:nil error:nil];//创建文件夹
        [fm createFileAtPath:[filePath stringByAppendingPathComponent:@"text_list22.txt"] contents:nil attributes:nil];//创建文件
        

 

0
1
分享到:
评论

相关推荐

    沙盒模式软件 防范病毒

    沙盒模式软件 防范病毒

    基于科技视角的区块链监管沙盒模式构建研究.pdf

    区块链作为金融科技中的一项关键技术,在全球范围内越来越受到重视,因此关于区块链技术的监管沙盒模式研究具有很强的现实意义和价值。 监管沙盒的概念起源于英国金融行为监管局(FCA),它的基本思想是在一个虚拟...

    1433之黑吃黑杀手锏——沙盒模式

    标题与描述中的“1433之黑吃黑杀手锏——沙盒模式”涉及的是网络安全领域内一个较为专业且敏感的话题,即通过SQL Server数据库的特定功能进行恶意操作,利用所谓的“沙盒模式”(SandBox Mode)进行系统权限提升或...

    判题沙盒,用于OJ的中间服务,介于OJ系统和沙盒系统之间的服务,用于管理运行代码的沙盒以及基本代码的运行和测试

    标题中的“判题沙盒”是指在线判题系统(Online Judge,简称OJ)中的一种核心技术,它在OJ系统和沙盒系统之间起到桥梁作用。判题沙盒的主要任务是管理和控制执行用户提交的代码,确保它们在安全的环境中运行,并对...

    ios沙盒文件存储操作

    1.每个应用程序都有自己的存储空间,沙盒目录下面有三个文件夹:Documents、Library 和 tmp。 2.应用程序不能翻过自己的围墙去访问别的存储空间的内容,所有的非代码文件都要保存在沙盒目录下。 3.应用程序请求的...

    DCSS安全沙盒系统介绍

    课件可能包括详细的系统架构讲解、操作指南、案例研究和最佳实践分享,帮助用户了解如何有效地部署和使用DCSS安全沙盒系统,提升安全防护能力。 7. 安全沙盒系统部署: 部署过程通常涉及系统规划、硬件配置、软件...

    区块链金融监管沙盒制度探究.pdf

    为此,许多国家和地区借鉴了英国的“监管沙盒”制度,以期在模拟真实市场环境的“安全区域”内,测试创新的技术产品、服务与商业模式,并对测试结果进行监控与评估,以判断是否允许其进入市场。 区块链技术虽然提供...

    swift内存缓存NSCache和沙盒磁盘缓存使用教程和demo下载

    Swift中的`NSCache`和沙盒中的磁盘缓存是两种常用的缓存策略,它们能够有效地提升用户体验,减少网络请求,降低服务器压力。本教程将深入探讨这两种缓存机制的使用,并提供一个包含实例代码的Demo下载。 ### 一、...

    沙盒的一个小demo

    沙盒技术在IT行业中扮演着重要的角色,尤其是在软件安全、应用程序开发和系统测试等领域。它是一种隔离技术,允许代码在受控环境中运行,而不会对主系统或用户数据造成潜在危害。下面我们将深入探讨沙盒的基本概念、...

    iOS沙盒机制简介

    **沙盒机制**是iOS操作系统中的一项重要安全特性,它确保每个应用程序都运行在一个独立且受限的环境中,以此来保护用户数据的安全和隐私。简单来说,沙盒机制为每一个iOS应用程序创建了一个隔离的“沙盒”,应用程序...

    ios沙盒数据存储

    `NSFileManager`是Objective-C中用于文件系统操作的主要类,它提供了多种方法来管理沙盒中的文件和目录。 一、`NSFileManager`基础 `NSFileManager`是一个系统服务类,通过它我们可以进行文件的创建、删除、移动、...

    ios-用ASI下载网络视频到存本地沙盒并用AVPlayer播放网路视频和本地沙盒视频 清除沙盒里的下载视频.zip

    用ASI下载网络视频到存本地沙盒 用自定义的AVPlayer播放 网路视频和本地沙盒视频 清除沙盒里的下载视频 下载进度显示 其实 AVPlayer可以放在cell上的AVPlayerLayer图层上(类似网易视听效果)没时间写了。...

    沙盒sandboxie-v5.46.1.zip

    安装过程中,Sandboxie会集成到浏览器和其他可执行文件中,使得它们默认在沙盒环境中启动。 在使用Sandboxie时,用户可以设置特定的应用程序运行在沙盒内。例如,对于网络浏览器,开启Sandboxie后,所有的网页浏览...

    沙盒U盘防泄密工作环境

    沙盒U盘为您提供了一个新的解决思路!给出差人员或者回家办公人员发一个U盘,让员工找到任何一个电脑上,插入U盘就可以办公了,沙盒U盘是一个完整的办公环境,可以安全的使用办公数据,也能通过U盘可以接入公司,...

    iOS沙盒机制

    iOS沙盒机制是苹果公司为了增强iOS设备安全性和提升用户体验而设计的一个系统级功能。它为每个应用提供了一个独立的文件系统环境,这种机制被广泛应用于iOS平台的软件开发中。沙盒限制了应用只能访问其特定的文件...

    Swift编程-iOS应用-沙盒模型

    Swift编程在iOS应用开发中扮演着至关重要的角色,而iOS应用的运行环境特有的一种机制——沙盒模型,是理解应用程序行为和数据管理的关键。在这个视频教程中,我们将深入探讨沙盒模型及其在Swift编程中的实际应用。 ...

    沙盒操作demo、缓存数据

    每个应用都有自己的沙盒,且不能访问其他应用的沙盒,这确保了应用间的数据隔离和安全性。本资源提供了一个沙盒操作的Demo,方便开发者快速理解和使用。 `BWmanagement` 是一个Objective-C编写的类,它可能封装了...

    iOS_SandBox沙盒路径获取

    在iOS应用开发中,"沙盒"(Sandbox)是一个重要的概念,它是每个应用程序的专属运行环境,确保了不同应用之间的数据隔离和安全性。每个iOS应用都有自己的沙盒目录,包含若干子目录,用于存储应用的数据、缓存、文档...

    ios-Swift 拷贝文件到沙盒.zip

    当你在Swift工程中遇到无法将文件复制到沙盒的问题,而同样的操作在Objective-C中却能成功,这通常涉及到文件管理和权限控制的不同处理方式。Swift与Objective-C虽然在语法上有诸多相似之处,但在某些API的使用上...

Global site tag (gtag.js) - Google Analytics