iPhone文件读写

创建与删除:
//创建文件管理器
NSFileManager* fileManager = [NSFileManager defaultManager];
//获取路径
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//取出需要的路径
NSString* documentsDirectory = [paths objectAtIndex:0];

//更改到待操作的目录下
[fileManager changeCurrentDirectoryPath:[documentsDirectory stringByExpandingTildeInPath]];

//创建文件fileName文件名称,contents文件的内容,如果开始没有内容可以设置为nil,attributes文件的属性,初始为nil
[fileManager createFileAtPath:@"fileName" contents:nil attributes:nil];

//删除文件
[fileManager removeItemAtPath:@"createdNewFile" error:nil];

写入数据:
//获取文件路径
NSString* path = [documentsDirectory stringByAppendingPathComponent:@"fileName"];

//待写入的数据
NSString* temp = @”Hello friend”;
int data0 = 100000;
float data1 = 23.45f;

//创建数据缓冲
NSMutableData* writer = [[NSMutableData alloc] init];

//将字符串添加到缓冲中
[writer appendData:[temp dataUsingEncoding:NSUTF8StringEncoding]];

//将其他数据添加到缓冲中
[writer appendBytes:&data0 length:sizeof(data0)];
[writer appendBytes:&data1 length:sizeof(data1)];

//将缓冲的数据写入到文件中
[writer writeToFile:path atomically:YES];
[writer release];

读取数据:
int gData0;
float gData1;
NSString *gData2;

NSData* reader = [NSData dataWithContentsOfFile:path];
gData2 = [[NSString alloc] initWithData:[reader subdataWithRange:NSMakeRange(0, [temp length])]
encoding:NSUTF8StringEncoding];
[reader getBytes:&gData0 range:NSMakeRange([temp length], sizeof(gData0))];
[reader getBytes:&gData2 range:NSMakeRange([temp length] + sizeof(gData0), sizeof(gData1))];

NSLog(@”gData0:%@ gData1:%i gData2:%f”, gData0, gData1, gData2);

读取工程中的文件:
读取数据时,要看待读取的文件原有的文件格式,是字节码还是文本,我经常需要重文件中读取字节码,所以我写的是读取字节文件的方式。
//用于存放数据的变量,因为是字节,所以是UInt8
UInt8 b = 0;

//获取文件路径
NSString* path = [[NSBundle mainBundle] pathForResource:@”fileName” ofType:@”"];

//获取数据
NSData* reader = [NSData dataWithContentsOfFile:path];

//获取字节的个数
int length = [reader length];
NSLog(@”——->bytesLength:%d”, length);
for(int i = 0; i < length; i++) { //读取数据 [reader getBytes:&b range:NSMakeRange(i, sizeof(b))]; NSLog(@”——–>data%d:%d”, i, b);

}



iPhone开发中文件读写教程是本文要介绍的内容,主要是来学习iphone开发中关于文件的操作,具体内容来看本文详细讲解。对于一个运行在iPhone得app,它只能访问自己根目录下得一些文件(所谓sandbox).。


一个app发布到iPhone上后,它得目录结构如下:

iPhone文件读写_第1张图片

1、其中得 app root 可以用 NSHomeDirectory() 访问到;


2、Documents 目录就是我们可以用来写入并保存文件得地方,一般可通过:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
NSString *documentsDirectory = [paths objectAtIndex:0];  得到。

3、tmp 目录我们可以在里面写入一些程序运行时需要用得数据,里面写入得数据在程序退出后会没有。可以通过
NSString* NSTemporaryDirectory();  方法得到;


4、文件一些主要操作可以通过NSFileManager 来操作,可以通过 [NSFileManger defaultManger] 得到它得实例。


相关得一些操作:

创建一个目录:
比如要在Documents下面创建一个test目录,
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentsDirectory = [paths objectAtIndex:0];  
NSLog(@”%@”,documentsDirectory);  
NSFileManager *fileManage = [NSFileManager defaultManager];  
NSString *myDirectory = [documentsDirectory stringByAppendingPathComponent:@“test”];  
BOOL ok = [fileManage createDirectoryAtPath:myDirectory attributes:nil]; 

取得一个目录下得所有文件名:(如上面的myDirectory)可用
NSArray *file = [fileManager subpathsOfDirectoryAtPath: myDirectory error:nil]; 

NSArray *files = [fileManager subpathsAtPath: myDirectory ]; 

读取某个文件:
NSData *data = [fileManger contentsAtPath:myFilePath];//myFilePath是包含完整路径的文件名

或直接用NSData 的类方法:
NSData* data = [NSData dataWithContentOfPath:myFilePath]; 


保存某个文件:

可以用 NSFileManager的

- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr; 
或 NSData 的

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;  
- (BOOL)writeToFile:(NSString *)path options:(NSUInteger)writeOptionsMask error:(NSError **)errorPtr; 

小结:详解iPhone开发中文件读写教程的内容介绍完了,希望通过本文的学习能对你有所帮助!


你可能感兴趣的:(iPhone,Path,encoding,attributes,sandbox,文件管理器)