标签:
1、创建目录createDirectoryAtPath:withIntermediateDirectories:attributes:error:
NSFileManager * fileManager = nil;
NSArray *paths = nil;
NSString *documentsDirectory = nil;
NSString * folerName = @"Photos";
NSString * fileName = @"myphoto.png";
NSString * filePath = nil;
UIImage *photoimage = nil;
NSData * imageData = nil;
//Documents:
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//Caches:
paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
documentsDirectory = [[paths objectAtIndex:0] stringByAppendingPathComponent:folerName];
fileManager = [[NSFileManager alloc]init];
[fileManager createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:error];
2、创建目录并在目录中存储对象createFileAtPath: contents: attributes
filePath = [documentsDirectory stringByAppendingPathComponent:filename];
if((![fileManager fileExistsAtPath: fullPathToFile]))
{
photoimage = [[UIImage alloc] imageNamed:@"photo.png"];
imageData = UIImagePNGRepresentation(photoimage);
[fileManager createFileAtPath:filePath contents: imageData attributes:nil];
}
[fileManager release];
3、删除目录中指定文件
NSString * filePath = [documentsDirectory stringByAppendingPathComponent: fileName];
4.
iPhone会为每一个应用程序生成一个私有目录,这个目录位于:
/Users/sundfsun2009/Library/Application Support/iPhone Simulator/User/Applications下,
并随即生成一个数字字母串作为目录名,在每一次应用程序启动时,这个字母数字串都是不同于上一次。
所以通常使用Documents目录进行数据持久化的保存,而这个Documents目录可以通过:
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserdomainMask,YES) 得到。
代码如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"path: %@",path);
打印结果如下:
path: /Users/apple/Library/Application Support/iPhone
Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7/Documents
而通过 NSHomeDirectory()也可以得到程序的目录,代码如下:
NSString *destPath = NSHomeDirectory();
NSLog(@"path: %@",destPath);
打印结果如下:
path: /Users/apple/Library/Application Support/iPhone Simulator/4.3/Applications/550AF26D-174B-42E6-881B-B7499FAA32B7
5
2.
3.
因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件:
代码如下:
可以通过ssh登录设备看到Documents目录下生成了该文件。
上述是创建ascii编码文本文件,如果要带汉字,比如:
如果还用ascii编码,将不会生成文件。这里使用NSUnicodeStringEncoding就可以了。
通过filezilla下载到创建的文件打开,中文没有问题:
如果要指定其他文件目录,比如Caches目录,需要更换目录工厂常量,上面代码其他的可不变:
使用NSSearchPathForDirectoriesInDomains只能定位Caches目录和Documents目录。
tmp目录,不能按照上面的做法获得目录了,有个函数可以获得应用的根目录:
NSHomeDirectory()
也就是Documents的上级目录,当然也是tmp目录的上级目录。那么文件路径可以这样写:
NSString *fileName=[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/myFile.txt"];
或者,更直接一点,可以用这个函数:
NSTemporaryDirectory()
不过生成的路径将可能是:
…/tmp/-Tmp-/myFile.txt
在编写应用项目的时候,常常会使用资源文件,比如:
安装到设备上后,是在app目录下的:
以下代码演示如何获取到文件并打印文件内容:
代码运行效果:
NSSearchPathForDirectoriesInDomains用法
标签:
原文地址:http://www.cnblogs.com/conanwin/p/4250426.html