以下 介绍 创建文件 缓存区 NSData 将字符串NSString写入缓存区(NSData),将缓存区数据(NSData)写入文件
将 NSData 转换为 NSString 类型输出,NSFileHandle 部分介绍 NSFileHandle对象打开文件的三种形式以及 指针偏移
示例如下:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *StrFileName=@"fileName";//文件名
NSString *Str1=@"Hello String";//创建字符串
//创建一个文件管理对象
NSFileManager *FileManage1=[NSFileManager defaultManager];
//创建NSData 缓存区
NSData *Data1=nil;
NSData *Data2=nil;
NSData *Data=nil;
//创建 Handle
NSFileHandle *Handle1=nil;
NSFileHandle *Handle2=nil;
//判断文件是否存在
if ([FileManage1 fileExistsAtPath:StrFileName]==NO) {
//创建文件
[FileManage1 createFileAtPath:StrFileName contents:nil attributes:nil];//创建内容为空的文件
}
else
{
NSLog(@"文件已存在");
}
//将 Str1 ——> Data1
Data1=[Str1 dataUsingEncoding:NSUTF8StringEncoding];//编解码方式UTF8
int nNum=[FileManage1 createFileAtPath:StrFileName contents:Data1 attributes:nil];
if (nNum!=NO) {
NSLog(@"Data数据写入文件成功");
}
//现在可以查看文件内容
//OC形式 输出文件内容
//Str2为读取的文件中得数据
NSString *Str2=[NSString stringWithContentsOfFile:StrFileName encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",Str2);//输出 Hello String
Data=[NSData dataWithContentsOfFile:StrFileName];
NSLog(@"%s",(char*)[Data bytes]);//强转打印 Data3 输出 Hello String
//将data数据转为oc字符串
NSString *Str4=[[NSString alloc] initWithData:Data encoding:NSUTF8StringEncoding];
NSLog(@"%@",Str4);//输出 Hello String
Data2=[@"abcde" dataUsingEncoding:NSUTF8StringEncoding];//将字符串“abcde” 存入缓存区 Data2 中
Handle1=[NSFileHandle fileHandleForWritingAtPath:StrFileName];//以只写的方法打开文件
//另一种读写方式打开
/* Handle1=[NSFileHandle fileHandleForUpdatingAtPath:StrFileName]; */
//指向文件尾
[Handle1 seekToEndOfFile];
//将 Data2 写入文件尾
[Handle1 writeData:Data2];
//现在再次输出文件内容
NSString *Str3=[NSString stringWithContentsOfFile:StrFileName encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",Str3);//输出 Hello Stringabcde
//指向文件头
[Handle1 seekToFileOffset:0];
[Handle1 writeData:Data2];//覆盖一部分内容 abcef Stringabc
//输出文件内容
NSLog(@"%@",[NSString stringWithContentsOfFile:StrFileName encoding:NSUTF8StringEncoding error:nil]);
//输出 abcde Stringabcde
[Handle1 closeFile];//关闭文件
//用 NSFileHandle 对象 获取指定大小的NSData
//默认指向文件头
Handle2=[NSFileHandle fileHandleForReadingAtPath:StrFileName];//只读方法打开
//指向文件头 ——> 可写成 [Handle2 seekToFileOffset:0];
NSData *Data3=[Handle2 readDataOfLength:5];//读取5个
//输出Data3
NSLog(@"%@",[[NSString alloc]initWithData:Data3 encoding:NSUTF8StringEncoding]);//输出 abcde
//关闭文件
[Handle2 closeFile];
}
return 0;
}