iPhone中沙盒的作用以及存取沙盒中的文件(图片)
2013-04-22 15:22
309 查看
转自:http://blog.sina.com.cn/s/blog_725cab6d0100srdt.html
【沙盒机制】:iPhone应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。
【iphone的沙盒理解】:ios的ipa安装文件就如同一个个盒子一般,放在了/user/applications目录下,以这个程序(比如goodreader)的眼光看外面的世界,他基本什么也看不到,因为他的权限如此之小,以至于他看不到在goodreader的目录外,世界上还有什么?这也就是打开goodreader后不能打开其他程序内的文档的原因。ios的ipa可以随便乱装而不用担心会像windows一样产生很多垃圾文件,因为几乎一个程序所有的东西都放在/user/applications中,少部分在/applications中,有的程序可能获得了ios的官方支持,有了一些更大的权限(绝不会太大,比如官方ipa的qq即使登峰造极,他也不会像symbian系统一样,在桌面搞出个qq的信息小头像),会在其他位置生成一些文件(可能性很小),为了进一步防止恶意ipa程序通过非法途径破坏其他程序,ios进一步为每个文件夹起了一个随机名字,采用uuid方式,就是你现在看到的很长一串数字字母的目录名,这样防止了其他程序猜测其他程序的位置。
【沙盒文件夹的路径】:/Users/“用户名”/Library/Application Support/iPhoneSimulator/User/Applications/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Documents/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6是你的应用程序随机生成的编码,每个应用程序文件夹的名字都不一样
------------------------------------------------------------------------------------------------------------------------------------------
所以了解了沙盒机制后,我们研究一下怎么写入一个文件(比如图像文件)到沙盒中保存下来,以及iPhone应用程序如何读这个文件。
经常遇到要从网上下载图片并保存到Iphone本地,从国外网站上找了一个Demo,与国人分享一下。
参数说明:
NSData toretrieve the image from the URL
NSDocumentDirectory tofind Document folder’s Path
UIImagePNGRepresentation tosave it as PNG
UIImageJPEGRepresentation tosave it as JPEG
代码说话:
NSLog(@”Downloading…”);
// Get an image from the URL below
UIImage *image = [[UIImage alloc] initWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.objectgraph.com/images/og_logo.png"]]];
NSLog(@”%f,%f”,image.size.width,image.size.height);
// Let’s save the file into Document folder. 即一下路径(/Users/“用户名”/Library/ApplicationSupport/iPhoneSimulator/User/Applications/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Documents/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Document)
NSString *docDir =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
// If you go to the folder below, you will find thosepictures
NSLog(@”%@”,docDir);
// 以png图片类型存储数据到Document文件夹下
NSLog(@”saving png”);
NSString *pngFilePath = [NSStringstringWithFormat:@"%@/test.png",docDir];
NSData *data1 = [NSDatadataWithData:UIImagePNGRepresentation(image)];
[data1 writeToFile:pngFilePath atomically:YES];
NSLog(@”saving jpeg”);
NSString *jpegFilePath = [NSStringstringWithFormat:@"%@/test.jpeg",docDir];
NSData *data2 = [NSDatadataWithData:UIImageJPEGRepresentation(image, 1.0f)];//1.0f = 100%quality
[data2 writeToFile:jpegFilePath atomically:YES];
NSLog(@”saving image done”);
[image release];
--------------------------------------------------------------------------------------------------
存放完了,那我们要去读取这些文件
//拿到应用程序沙盒里面的路径
NSArray*paths =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
objectAtIndex:0];
//读取存在沙盒里面的文件图片
NSString*imgPath=[[paths objectAtIndex:0]stringByAppendingPathComponent:@"bgimage.png"];
//因为拿到的是个路径 把它加载成一个data对象
NSData*data=[NSDatadataWithContentsOfFile:imgPath];
//直接把该图片读出来
UIImage*img=[UIImage imageWithData:data];
【沙盒机制】:iPhone应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。
【iphone的沙盒理解】:ios的ipa安装文件就如同一个个盒子一般,放在了/user/applications目录下,以这个程序(比如goodreader)的眼光看外面的世界,他基本什么也看不到,因为他的权限如此之小,以至于他看不到在goodreader的目录外,世界上还有什么?这也就是打开goodreader后不能打开其他程序内的文档的原因。ios的ipa可以随便乱装而不用担心会像windows一样产生很多垃圾文件,因为几乎一个程序所有的东西都放在/user/applications中,少部分在/applications中,有的程序可能获得了ios的官方支持,有了一些更大的权限(绝不会太大,比如官方ipa的qq即使登峰造极,他也不会像symbian系统一样,在桌面搞出个qq的信息小头像),会在其他位置生成一些文件(可能性很小),为了进一步防止恶意ipa程序通过非法途径破坏其他程序,ios进一步为每个文件夹起了一个随机名字,采用uuid方式,就是你现在看到的很长一串数字字母的目录名,这样防止了其他程序猜测其他程序的位置。
【沙盒文件夹的路径】:/Users/“用户名”/Library/Application Support/iPhoneSimulator/User/Applications/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Documents/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6是你的应用程序随机生成的编码,每个应用程序文件夹的名字都不一样
------------------------------------------------------------------------------------------------------------------------------------------
所以了解了沙盒机制后,我们研究一下怎么写入一个文件(比如图像文件)到沙盒中保存下来,以及iPhone应用程序如何读这个文件。
经常遇到要从网上下载图片并保存到Iphone本地,从国外网站上找了一个Demo,与国人分享一下。
参数说明:
NSData toretrieve the image from the URL
NSDocumentDirectory tofind Document folder’s Path
UIImagePNGRepresentation tosave it as PNG
UIImageJPEGRepresentation tosave it as JPEG
代码说话:
NSLog(@”Downloading…”);
// Get an image from the URL below
UIImage *image = [[UIImage alloc] initWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.objectgraph.com/images/og_logo.png"]]];
NSLog(@”%f,%f”,image.size.width,image.size.height);
// Let’s save the file into Document folder. 即一下路径(/Users/“用户名”/Library/ApplicationSupport/iPhoneSimulator/User/Applications/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Documents/2CADA5C1-6B9F-44E9-8F06-6C992E3E99C6/Document)
NSString *docDir =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0];
// If you go to the folder below, you will find thosepictures
NSLog(@”%@”,docDir);
// 以png图片类型存储数据到Document文件夹下
NSLog(@”saving png”);
NSString *pngFilePath = [NSStringstringWithFormat:@"%@/test.png",docDir];
NSData *data1 = [NSDatadataWithData:UIImagePNGRepresentation(image)];
[data1 writeToFile:pngFilePath atomically:YES];
NSLog(@”saving jpeg”);
NSString *jpegFilePath = [NSStringstringWithFormat:@"%@/test.jpeg",docDir];
NSData *data2 = [NSDatadataWithData:UIImageJPEGRepresentation(image, 1.0f)];//1.0f = 100%quality
[data2 writeToFile:jpegFilePath atomically:YES];
NSLog(@”saving image done”);
[image release];
--------------------------------------------------------------------------------------------------
存放完了,那我们要去读取这些文件
//拿到应用程序沙盒里面的路径
NSArray*paths =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)
objectAtIndex:0];
//读取存在沙盒里面的文件图片
NSString*imgPath=[[paths objectAtIndex:0]stringByAppendingPathComponent:@"bgimage.png"];
//因为拿到的是个路径 把它加载成一个data对象
NSData*data=[NSDatadataWithContentsOfFile:imgPath];
//直接把该图片读出来
UIImage*img=[UIImage imageWithData:data];
相关文章推荐
- iPhone沙盒以及文件操作的一些简单介绍
- Java 操作MySQL数据库存取图片以及其它类型文件
- sandbox沙盒介绍以及如何取得沙盒里面各文件的路径,图片导入方式和图片路径获取
- 如何设置图片以及plist文件,使能够自动识别ipad以及iphone
- 【iOS开发-3】sandbox沙盒介绍以及如何取得沙盒里面各文件的路径,图片导入方式和图片路径获取
- sandbox沙盒介绍以及如何取得沙盒里面各文件的路径,图片导入方式和图片路径获取
- 头文件作用 以及 声明与定义的区别
- Android 上传文件,图片。以及服务器端接收相关
- C#二进制存取图片文件
- 简单的安卓程序以及各文件作用
- tomcat各目录(文件)作用以及mac下启动Tomcat
- Gulp实现css、js、图片的压缩以及css、js文件的MD5命名
- 项目结构 以及文件的作用
- LINUX目录和文件各自的权限说明,以及目录和文件权限之间的关系(应用:配置linux下上传图片的存储目录)
- ASP.NET2.0文件上传以及图片处理
- 环境配置文件 ① /etc/profile、② ~/.bash_profile、③ ~/.bashrc、④ /etc/bashrc 作用与执行顺序,以及与login/nonlogin关系
- Gulp实现css、js、图片的压缩以及css、js文件的MD5命名
- Makefile.am, Makefile.in, Makefile文件之间关系以及aclocal, automake, autoconf等命令作用的探究
- 用C语言写的ISAPI上传文件(图片)、显示图片、图片存储以及可供其它语言调用的方式、和程序源代码
- 获取MP3和M4A音乐文件的歌曲信息以及专辑图片