程序中的文件之沙盒以及plist文件的初步使用

yxysuanfa yxysuanfa     2022-09-04     663

关键词:

沙盒是相对于“应用程序”的文件,也就是相相应app所在的页面的文件。

每个应用都有自己的应用沙盒(应用沙盒就是文件系统文件夹)。与其它文件系统隔离。应用必须呆在在积极的沙盒中。其它的应用不可以訪问沙盒。

(这个是在ios8之前)

ios8之后,沙盒进行了开发,有关应用的安全性有待研究。


沙盒的根文件夹为:/Users/zhumin/Library/Developer/CoreSimulator/Devices/09E156EA-B44B-4CCA-9E32-9286D332DDF0/data/Containers/Data/Application/A861DA79-90CE-4106-9332-2A678A157AE0  //可见,一般沙盒的中的文件夹的名字都是应用随机产生一系列的字符串。


相关的图片:

技术分享 

(开发平台的文件夹,一般都是存放在mainbundle的文件夹以下)

技术分享

(ios8之后的沙盒文件加的文件夹。程序的文件夹文件夹不在这里了,有待回答?



技术分享

(ios8 之前的目录,mainbundle目录在沙盒里面,而且沙盒目录是隔离的。



以下依照ios7之前的文件加线了解下:

应用程序包:(图:layer)包括了全部哦的资源和可运行文件。

Documents:保存程序所需的持久化的数据执行,ITunes自己主动备份该文件夹。eg:游戏应用可将游戏存档保存在该文件夹

(存放基本的文件文件夹)使用plist存储,一般都是存储到这个文件夹下。

tmp:保存程序所需的暂时数据 执行,使用完成之后会将对应的文件从该文件夹中删除。应用没有执行时候也会清楚该文件夹以下的文;ITunes不会备份这个文件夹的文件夹。

(存放一些执行的时候锁须要的暂时数据)

Library:(库)分别有:

           1)caches。保存应用执行时生成的须要持久化的数据,也就是缓存,我们常见的就是浏览器缓存,事实上一样的道理。

Itunes不会同步备份

           2)preference,保存应用的全部偏好设置iOSSettings(设置)应用会在该文件夹中查找应用的设置信息。iTunes同步设备时会备份该文件夹。

           我们锁使用的NSUserDefault 来持久化的时候,都会用到这个类来讲数据存储到这个文件夹下。


沙盒文件文件夹的获取方法:

1)通过查找出文件的路径,然后直接获取,也就是写死了。建议不那么写由于我们安装到手机上面等等,沙盒的目录的名字都是随机的字符串,所以会改变的。

2)通过获取沙盒的主文件夹方法,我们能够通过NSHomeDirectory()这种方法来获取,然后再在后面加上这个文件夹的名字。

eg:NSString * home = NSHomeDirectory();

[home stringByAppendingString(@"/Documents")];//这样的方法也是不去提倡的,由于这种方法中的“”有可能格式会该厂“/”,所以存在不确定性。

所以。假设呀直接改变载入文件夹的文件夹,能够通过另外一个方法:[home stringByAppendingComponet(@"Documents")];这种方法就不存在“”这个问题。

3)要获取documents的文件夹的文件夹,能够直接用法来获取。

eg:      NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);这种方法来直接获取。

NSDocumentDirectory表示要查找的文件加文件夹是decument。

YES代表展开路径中的波浪字符“~”,也就是用户的文件夹;

NSUserDomainMask代表从用户目录下找。


// iOS中。仅仅有一个文件夹跟传入的參数匹配。所以这个集合里面仅仅有一个元素

NSString*documents = [array objectAtIndex:0];这样就获取到了文件夹。要保存文件在这个文件夹以下。我们能够通过先创建一个文件的名字。然后加入到后面就可以。


tmpNSString *tmp = NSTemporaryDirectory();

Library/Caches(Documents类似的2种方法)
利用沙盒根文件夹拼接”Caches”字符串

Library/Preference:通过NSUserDefaults类存取该文件夹下的设置信息


#######
属性列表是一种XML格式的文件。拓展名为plist
假设对象是NSStringNSDictionaryNSArrayNSDataNSNumber等类型。就能够使用writeToFile:atomically:方法直接将对象写到属性列表文件里
利用NSSearchPathForDirectoriesInDomains函数(将函数的第2个參数改为:NSCachesDirectory就可以)



eg:以下的一个plist文件的样例:
 //1、获取目录document的路径  
 NSString *path1 = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];  
 NSString *path = [path1 stringByAppendingString:@"exmaple.plist"];    
NSLog(@"%@",path);    
   // 将数据封装成字典   
 NSMutableDictionary *dict = [NSMutableDictionary dictionary];    
[dict setObject:@"母鸡" forKey:@"name"];  
[dict setObject:@"15013141314" forKey:@"phone"];   
[dict setObject:@"27" forKey:@"age"];   
// 将字典持久化到Documents/stu.plist文件里   
[dict writeToFile:path atomically:YES];

 //通过上面的路径获取文件的数据,这里仅仅是方便,假设在其它文件里获取文件的数据。我们须要再次获取文件的文件夹
  NSDictionary *dict2 = [NSDictionary dictionaryWithContentsOfFile:path];
  NSLog(@"%@",dict2.description);


执行之后的结果:
技术分享
   
能够通过文件的方式打开,会看到里面是xml的格式。

获取之后的结果输出:
 技术分享
通过上面,我们也能够数据写入和获取的方法。









































ios监管模式存储路径

...么地方去,这就需要我们了解iOSApp特有的沙盒机制了。iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”,即沙盒其实就是一个App特有的一个文件夹,iOS下每个App都有自己特有的一个沙盒,其结构和目录特性... 查看详情

如何保护 ios 应用程序中的默认 plist 文件

】如何保护ios应用程序中的默认plist文件【英文标题】:howtosecuredefaultplistfilesiniosapp【发布时间】:2017-06-1208:54:44【问题描述】:plist文件易受攻击,很容易被黑客访问。所以我使用另一种方法来保存我的应用程序的敏感数据。... 查看详情

Plist:它是啥以及如何使用它

...有一种方法可以通过将内容推送到数组中来提取plist文件中的数据?另外,在哪里可以查看.plist的来源?【问 查看详情

如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件

】如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件【英文标题】:Howprogrammaticallydeletefilesinsideapplicationfolderinasandboxenabledapp【发布时间】:2014-02-1209:12:24【问题描述】:我正在尝试从我的Cocoa应用程序中删除... 查看详情

iBooks 能够读取其他应用程序沙盒中的文件

】iBooks能够读取其他应用程序沙盒中的文件【英文标题】:iBooksabletoreadFilesinOtherApp\'sSandBox【发布时间】:2010-12-1016:44:46【问题描述】:我想知道我是否可以开发一个应用程序,该应用程序可以从网站下载epub格式的书籍,然后iBo... 查看详情

有没有办法让我的沙盒 Mac 应用程序只读访问 ~/Library 中的文件?

】有没有办法让我的沙盒Mac应用程序只读访问~/Library中的文件?【英文标题】:IsthereanywaytogivemysandboxedMacappreadonlyaccesstofilesin~/Library?【发布时间】:2012-06-0815:58:46【问题描述】:我对沙盒有点困惑。这可能吗?谢谢!【问题讨论... 查看详情

将应用程序配置保存在 plist 文件中的最佳实践

】将应用程序配置保存在plist文件中的最佳实践【英文标题】:Bestpracticeofkeepingapplicationconfigurationinplistfile【发布时间】:2012-02-2811:18:05【问题描述】:这听起来可能是个新手问题,反正我是iOS开发新手,我想知道将应用程序配... 查看详情

持久化存储——偏好设置,plist,归档---学习笔记二

//一.本地持久化//1.沙盒//1.1应用程序包:存放的是应用程序的源文件,包括资源文件和可执行文件NSString*path=[[NSBundlemainBundle]bundlePath];//1.2Documents:最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据NS... 查看详情

主包和应用程序目录中的文件

】主包和应用程序目录中的文件【英文标题】:FilesintheMainBundleandApplicationDirectory【发布时间】:2014-02-1620:42:15【问题描述】:我正在制作一个iOS应用程序,该应用程序使用存储在应用程序主包中的.plist文件中的字符串填充UITableV... 查看详情

无法本地化 iOS info.plist 文件中的字符串

...【发布时间】:2018-07-1613:40:42【问题描述】:在我的应用程序中,我想支持本地化。我可以使用Localizable.strings本地化应用程序,但Info.plist文件除外。我想本地化应用程序的隐私警报消息。我在下面找到了有用的链接,但它不适... 查看详情

plist文件格式转换器

plist文件是一种用于存储应用程序配置信息的文件格式,其中包含应用程序的各种设置和数据。在过去,plist文件通常是以.plist格式存储的。然而,随着时间的推移,人们开始使用.plistx格式来存储更复杂的数据结构和数据。如果... 查看详情

Mac 沙盒和临时文件

...时间】:2012-03-2114:06:17【问题描述】:我正在对我的应用程序进行沙盒处理,但我遇到了一个问题,因为我使用的库在修改原始文件时会创建临时文件,例如当它更改“HelloWorld.txt”中的某些内容时,它将在同一目录中创建一个... 查看详情

使用plist编辑器——简单入门指南

...件。plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、数组、对象等。plist文件通常以.plist为扩展名,可以使用多种文本编辑器或集成开发环境(IDE)来编辑。以下是一些常用的plist编辑器:... 查看详情

使用plist编辑器——简单入门指南

...件。plist文件是一种常见的配置文件格式,用于存储应用程序或系统的设置信息,如键值对、数组、对象等。plist文件通常以.plist为扩展名,可以使用多种文本编辑器或集成开发环境(IDE)来编辑。以下是一些常用的plist编辑器:... 查看详情

如何将 Plist 文件与 UITableView / UICollectionView 一起使用?

...4-1619:15:24【问题描述】:我正在创建一个基本的音乐应用程序-乐队的专辑首先显示在UICollectionView中,然后当我点击专辑时,我会被推送到详细视图,其中显示有关所选专辑的信息,以及与 查看详情

沙盒中的文件的各自作用

...ments:   只有用户生成的文件、其他数据及其他程序不能重新创建的文件,应该保存在<Application_Home>/Documents目录下面,并将通过iCloud自动备份。2.Library   可以重新下载或者重新生成的数据应该保存在<A... 查看详情

我可以在我的应用程序之外使用 plist 文件做啥?

】我可以在我的应用程序之外使用plist文件做啥?【英文标题】:WhatcanIdowithplistfilesoutsideofmyapp?我可以在我的应用程序之外使用plist文件做什么?【发布时间】:2009-07-3020:23:42【问题描述】:我的iPhone应用程序生成了一些非常漂... 查看详情

如何将 IOS 应用程序中的 plist 重用到我们的 android 应用程序中

】如何将IOS应用程序中的plist重用到我们的android应用程序中【英文标题】:HowtoreuseplistfromIOSAppsintoourandroidapps【发布时间】:2015-10-0912:01:38【问题描述】:我想在android中使用plist文件数据来告诉任何读取plist文件的最佳方法。【... 查看详情