ios从沙盒中取出文件|ios怎样取得沙盒中的具体的文件

|

❶ iOS怎么获取并移除沙盒中Documents文件夹下的所有文件

IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容。iOS越狱不代表沙盒(sandbox)的移除,至少现在的越狱方案都不会做这样的傻事(不同的越狱方案对沙盒会有所不同的影响)。但可以肯定:通过App Store渠道下载安装(在路径/var/mobile/Applications/下面)的应用依然会被困在自己的沙盒内,即便是越狱环境,那么它们也不能非法未授权访问沙盒以外的文件,譬如说短信(/var/mobile/Library/SMS/sms.db)。 既然沙盒未被移除,那越狱的风险是什么?是安装的应用并不需要经过App Store的证书校验。就是说安装的应用可以自己选择安装路径,譬如说跟Apple的预装应用一样安装在/var/stash/Applications/下面,那么它便不受沙盒控制。它可以访问的文件就太多了,不限于你的短信、你的联系人、你的邮件、你的设置等等… 看到这里,你或许已经知道,为什么我们不推荐,甚至极力反对大家在越狱之后于App Store以外的渠道安装iOS普通应用(指那些IPA后缀的常规应用),即便你说这些应用不是盗版,它们是免费应用,并且是获得开发者授权才于这些商店上架云云…… Hey,你知道我不是跟你说什么盗版(这还需要再费口舌吗)。而是,我们无法清楚了解它们是否跟App Store上面分发的那个版本一模一样,还是说加过料的。譬如说,会安装在它们不应该在的路径下面,跳出沙盒的控制,又或者说带了其它数据收集的组件。 所以,越狱之后,请还继续在App Store安装应用。在Cydia上面只安装你信任的tweaks,通常我不会建议安装国内公司开发的任意软件,也不要添加他们提供的任何Cydia源。你知道,有时候App Store的条款和限制都绑不住这些流氓,放出来怎么得了?再进一步,如果一个国内公司开发的应用取得跟Cydia一样的地位,譬如说太极助手…后果我不敢想象。当我们选择越狱,一定程度上,是因为我们信任解决方案背后的越狱社群,信任Cydia,信任saurik,也相信这个社群的人会相互监督。但如果你把这种信任放在错误的人身上,那么…你要对自己负责,别人说活该的时候也认了罢。 那是否iOS越狱之后,从App Store安装的应用就一定安全?也并非如此,上面说了不同的越狱方案对sandbox的影响会有不同。但通常都会使其变得更虚弱,譬如说越狱之后这些应用可以‘fork’沙盒外的文件。当然,危害就没有那么大,也无需太过紧张。App Store上面的应用并没有坏到假设你的设备已经越狱然后针对开发出坏坏的功能隐蔽躲过App Store Review然后上架看能不能对已经越狱的设备作点坏事。

❷ ios怎样取得沙盒中的具体的文件

在制作应用的时候经常用到沙盒路径 存取文件路径的说明Documents:应用中用户数据可以放在这里,内iTunes备份和恢复的时候会包容括此目录tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除用代码来获取Documents用户数据路径[(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]用代码来获取Library/Caches缓存目录(配置文件以及用户缓存存放位置)(NSLibraryDirectory, NSUserDomainMask, YES);用代码获取tmp临时目录[NSHomeDirectory() stringByAppendingFormat:@"/tmp"];//在系统主目录下查找tmp文件夹

❸ iOS开发 读取 沙盒中的pdf文件 CGPDFDocumentCreateWithURL(url) 返回为空, 有这方面经验的朋友帮帮。

CFURLRef pdfURL = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:source]);CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);或者NSURL * url = [NSURL URLWithString:self.fileName];CFURLRef pdfURL = (__bridge CFURLRef _Nonnull)url;CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL(pdfURL);

❹ ios 怎么把照片再从沙盒里面取出来

兄弟 你少写了个u;NSString *fullPath = [[NSHomeDirectory() :@"Docments"] :@"currentImage.png"];是documents 不是docments

❺ iOS怎么获取并移除沙盒中文件夹下的所有文件

如何查看、管理ios模拟器上的文件? ios模拟器的路径-打开沙盒路径 1、模拟器沙盒目录 文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library。 1.1 方法1、可以设置显示隐藏文件,然后在Finder下直接打开。

❻ ios开发怎样根据文件路径获得文件实体

NSString *home = NSHomeDirectory();//获取沙盒路径//拼接Documents路径//NSString *docPath = [home stringByAppendingStringt:@"/Documents"];NSString *docPath = [home :@"Documents"];NSString *filePath = [docPath :@"data.plist"];NSArray *array = @[@1,@2,@"123"];//只有具备writeToFile的对象回才能使用plist存储答,NSArray[array writeToFile:filePath atomically:YES];主要是获取路径,然后把文件写到这个路径里就好了

❼ ios开发怎么从沙盒中取出大量的数据而不卡

从沙盒中取数据是需要异步处理的,跟从数据库和后台接口取数据一样。必须采用异步处理,不能直接在主线程中取数据。例如下面的沙盒操作。[self showProgressWithView:self.view animated:YES]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSString *docDirPath = [(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *path = [self libCachePath]; // NSString *filePath = [NSString stringWithFormat:@"%@/%@.zip", docDirPath , [name stringFromMD5]]; NSFileManager* fileManager=[NSFileManager defaultManager]; /**删除zip文件*/ NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:docDirPath]; for (NSString *fileName in enumerator) { [[NSFileManager defaultManager] removeItemAtPath:[docDirPath :fileName] error:nil]; } [fileManager removeItemAtPath:path error:nil]; [DBDaoHelper createAllTable]; dispatch_async(dispatch_get_main_queue(), ^{ [self hideProgress:self.view animated:YES]; });

❽ iOS 怎么从沙盒中加载 一个 zip 包和一个资源文件夹

这肯定的啊,因为用[UIImage imageNamed:question.icon]是直接从当前的项目中读取文件,可以实现;而NSString *path = [[NSBundle mainBundle] pathForResource:question.icon];是从沙盒路径中读取文件,只用question.icon是不够的,应该加上当前的沙盒路径,如果你的沙盒路径中还有一个存放图片的文件夹的话,还要加上这个文件夹的名字,question.icon应该改为:沙盒路径/文件夹名/question.icon具体实现是这样的://程序包的根目录(沙盒路径) NSString *resourcePath = [[NSBundle mainBundle] resourcePath];//完整的图片路径,如果图片是放在文件夹中的话,还要在中间加上文件夹的路径 NSString *imagepath = [resourcePath :@”question.icon“];//可以打印路径看看是什么情况NSlog(@“%@”,imagePath);UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

❾ ios 怎么拿到沙盒中的tmp文件

iOS系统是对外封闭的。在不越狱的情况下是不允许拿到一些被保护的文件。当你连接到电脑时会允许你导出一些存档之类的文件,但是如果是涉及到敏感路径或者系统的,iOS会自动拒绝导出。像temp这样的文件夹就属于敏感路径,不越狱是打不开甚至看不到的。

❿ ios 怎么获取工程里的.caf 文件

iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么.documents,tmp,app,Library。(NSHomeDirectory()),手动保存的文件在documents文件里Nsuserdefaults保存的文件在tmp文件夹里1、Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。2、AppName.app 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。3、Library 目录:这个目录下有两个子目录:Caches 和 PreferencesPreferences 目录:包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.Caches 目录:用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。4、tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。获取这些目录路径的方法:1,获取家目录路径的函数:NSString *homeDir = NSHomeDirectory();2,获取Documents目录路径的方法:NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);NSString *docDir = [paths objectAtIndex:0];3,获取Caches目录路径的方法:NSArray *paths = (NSCachesDirectory, NSUserDomainMask, YES);NSString *cachesDir = [paths objectAtIndex:0];4,获取tmp目录路径的方法:NSString *tmpDir = NSTemporaryDirectory();5,获取应用程序程序包中资源文件路径的方法:例如获取程序包中一个图片资源(apple.png)路径的方法:NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];代码中的mainBundle类方法用于返回一个代表应用程序包的对象。iphone沙盒(sandbox)中的几个目录获取方式:[cpp] view plain // 获取沙盒主目录路径 NSString *homeDir = NSHomeDirectory(); // 获取Documents目录路径 NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [paths objectAtIndex:0]; // 获取Caches目录路径 NSArray *paths = (NSCachesDirectory, NSUserDomainMask, YES); NSString *cachesDir = [paths objectAtIndex:0]; // 获取tmp目录路径 NSString *tmpDir = NSTemporaryDirectory(); [cpp] view plain // 获取当前程序包中一个图片资源(apple.png)路径 NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"png"]; UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath]; 例子:NSFileManager* fm=[NSFileManager defaultManager];if(![fm fileExistsAtPath:[self dataFilePath]]){//下面是对该文件进行制定路径的保存[fm createDirectoryAtPath:[self dataFilePath] withIntermediateDirectories:YES attributes:nil error:nil];//取得一个目录下得所有文件名NSArray *files = [fm subpathsAtPath: [self dataFilePath] ];//读取某个文件NSData *data = [fm contentsAtPath:[self dataFilePath]];//或者NSData *data = [NSData dataWithContentOfPath:[self dataFilePath]];}


赞 (0)