OC 文件部分 (NSFileManager NSData NSFileHandle 的应用)

以下 介绍 创建文件  缓存区 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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值