您的位置:首页 > 移动开发 > IOS开发

[iOS]iOS写入文本时追加而不是覆盖

2015-10-09 15:54 507 查看

一、问题描述

将特定的字符串写入到沙盒中的文件中,追加而不是覆盖

二、解决方案

- (void)writefile:(NSString *)string
{
NSArray *paths  = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *homePath = [paths objectAtIndex:0];

NSString *filePath = [homePath stringByAppendingPathComponent:@"testfile.text"];

NSFileManager *fileManager = [NSFileManager defaultManager];

if(![fileManager fileExistsAtPath:filePath]) //如果不存在
{
NSString *str = @"姓  名/手  机  号/邮  件";
[str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

}

NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];

[fileHandle seekToEndOfFile];  //将节点跳到文件的末尾

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *datestr = [dateFormatter stringFromDate:[NSDate date]];

NSString *str = [NSString stringWithFormat:@"\n%@\n%@",datestr,string];

NSData* stringData  = [str dataUsingEncoding:NSUTF8StringEncoding];

[fileHandle writeData:stringData]; //追加写入数据

[fileHandle closeFile];
}


三、示例



四、总结

读取文件类和常用方法

NSFileHandle类主要对文件内容进行读取和写入操作

NSFileManager类主要对文件的操作(删除、修改、移动、复制等等)

常用处理方法

+ (id)fileHandleForReadingAtPath:(NSString *)path  //打开一个文件准备读取

+ (id)fileHandleForWritingAtPath:(NSString *)path  //打开一个文件准备写入

+ (id)fileHandleForUpdatingAtPath:(NSString *)path  //打开一个文件准备更新

-  (NSData *)availableData; //从设备或通道返回可用的数据

-  (NSData *)readDataToEndOfFile; //从当前的节点读取到文件的末尾

-  (NSData *)readDataOfLength:(NSUInteger)length; //从当前节点开始读取指定的长度数据

-  (void)writeData:(NSData *)data; //写入数据

-  (unsigned long long)offsetInFile;  //获取当前文件的偏移量

-  (void)seekToFileOffset:(unsigned long long)offset; //跳到指定文件的偏移量

-  (unsigned long long)seekToEndOfFile; //跳到文件末尾

-  (void)truncateFileAtOffset:(unsigned long long)offset; //将文件的长度设为offset字节

-  (void)closeFile;  关闭文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios NSFileHand NSFileMana