今天做了程序来存储数据,也是弄了好半天才弄好
主要就是在创建文件,而且在文件后面进行追加这方面花了好多力气
现在终于弄好了,分享给大家,希望能帮到大家的忙吧
-(BOOL) saveData:(NSString *)data saveFileName:(NSString *)fileName
{
NSError *error = nil;
BOOL isOK = YES;
//下面这两行是获得存放文件的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if (!documentsDirectory)
{
NSLog(@"Documents directory not found!");
return NO;
}
//将你要创建的文件夹连接到documentsDirectory这个路径上,但注意这里并没有创建
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
BOOL isDirExist = [[NSFileManager defaultManager] fileExistsAtPath:appFile];
//这里一定要做一个判断,判断这个文件是否存在,如果已经存在但没有判断,直接来创建,那
//这一次运行程序的文件会将上一次的文件覆盖掉,丢失以前的数据
if(isDirExist == NO)
{
//createDirectoryAtPath:真正的创建一个文件夹
[[NSFileManager defaultManager]createDirectoryAtPath:appFile withIntermediateDirectories:YES attributes:nil error:&error];
}
//将你要创建的文件连接到上面创建的文件夹的路径上,注意这里并没有创建
//如果你并不想创建文件夹想直接创建文件,上面关于appFile的东西就可以删掉了
//只要把下面的appFile改为documentsDirectory就可以了
NSString *logPath = [appFile stringByAppendingPathComponent:@"file.txt"];
BOOL isFileExist = [[NSFileManager defaultManager]fileExistsAtPath:logPath];
if(isFileExist == NO)
{
[[NSFileManager defaultManager] createFileAtPath:logPath contents:nil attributes:nil];
}
//下面的NSFileHandle是向文件中写数据
NSLog(@"logPath = %@",logPath);
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:logPath];
NSLog(@"fileHandele = %@",fileHandle);
@try
{
NSLog(@"Data:%@",data);
[fileHandle seekToEndOfFile];
[fileHandle writeData:[data dataUsingEncoding:NSUTF8StringEncoding]];
}
@catch (NSException *exception)
{
isOK = NO;
}
@finally{
}
//关闭文件
[fileHandle closeFile];
return isOK;
}
取数据用下面方法
-(id) loadData:(NSString *)fileName
{
NSError *error = nil;
//先得到路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
NSString *logPath = [appFile stringByAppendingPathComponent:@"file.txt"];
//将文件中的字符传赋值给string
NSString *string = [NSString stringWithContentsOfFile:logPath encoding:NSUTF8StringEncoding error:&error];
//如果你的文件中直接存储的是数组,那么就可以用下面的方法来实现取值
//NSMutableArray *myData = [[[[NSMutableArray alloc] initWithContentsOfFile:logPath] componentsJoinedByString:@"\n"] autorelease];
//存到文件中的字符串后面带有\n,将全部的字符串以\n为分割点存到数组中
NSArray *myData = [string componentsSeparatedByString:@"\n"];
return myData;
}
如果你们有不同的意见,欢迎交流