20150619_OC之NSData及文件操作NSFileHandle

OC中NSData数据,将对象边为字节码

//
//  main.m
//  IOS150619_ObjectiveC_NSData
//
//  Created by qianfeng on 15/6/19.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *string = @"I love China";
        //把字符串对象转换成NSData对象
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"%@",data);
        
        //把data对象中的数据写到指定文件中,文件不存在可以创建目的文件,但是目录不存在,则写失败
        //- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
        BOOL ret = [data writeToFile:@"/Users/qianfeng/Desktop/test/dic3/Hello.txt" atomically:YES];//原子性,即在写过程中不被打断,要么全部写完,要么就不写
        NSLog(@"ret = %d",ret);
        
        //把文件内容读成二进制对象
        NSData *data1 = [NSData dataWithContentsOfFile:@"/Users/qianfeng/Desktop/test/dic3/Hello.txt"];
        
        //将NSData对象转换成字符串对象
        NSString *string1 = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding];
        NSLog(@"string1 = %@",string1);
        
        
    }
    return 0;
}

NSFileHandle文件句柄:

//  main.m
//  IOS150619_ObjectiveC_文件操作
//
//  Created by qianfeng on 15/6/19.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
	//句柄类似与二级指针,仅仅是类似
        //文件句柄
        //以只读的方式创建文件句柄,打开文件
        //+ (instancetype)fileHandleForReadingAtPath:(NSString *)path;
        //NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:@""];
        
        //以只写的方式创建文件句柄,打开文件
        //+ (instancetype)fileHandleForWritingAtPath:(NSString *)path;
        //NSFileHandle *fh1 = [NSFileHandle fileHandleForWritingAtPath:@""];
        
        //以可读可写的方式创建文件句柄
        //+ (instancetype)fileHandleForUpdatingAtPath:(NSString *)path;
        NSFileHandle *fh2 = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/qianfeng/Desktop/test/4.txt"];
        //把文件指针移动到文件末尾,从文件指针的位置开始写
        [fh2 seekToEndOfFile];
        //写文件
        NSData *data1 = [@"中国雄起" dataUsingEncoding:NSUTF8StringEncoding];
        NSData *data2 = [@"上海牛" dataUsingEncoding:NSUTF8StringEncoding];
        [fh2 writeData:data1];
        [fh2 writeData:data2];
        //把文件的内容同步到磁盘中
        [fh2 synchronizeFile];
        [fh2 closeFile];//文件句柄消失的时候,对应的文件应该关闭
        
        //读取文件内容到末尾
        NSFileHandle *fh3 = [NSFileHandle fileHandleForUpdatingAtPath:@"/Users/qianfeng/Desktop/test/4.txt"];
        NSData *data3 = [fh3 readDataToEndOfFile];
        NSString *string = [[NSString alloc] initWithData:data3 encoding:NSUTF8StringEncoding];
        NSLog(@"string = %@",string);
        
        //读取文件指定长度大小
        //在OC中一个汉字占3个字节,如果把汉字拆了就无法转换成字符串对象
        
        //移动文件指针到指定位置
        //- (void)seekToFileOffset:(unsigned long long)offset;
        [fh3 seekToFileOffset:6];
        NSData *data4 = [fh3 readDataOfLength:9];
        
        NSLog(@"data4 = %@",[[NSString alloc] initWithData:data4 encoding:NSUTF8StringEncoding]);
        
        
        //截断文件为指定大小字节内容
        //- (void)truncateFileAtOffset:(unsigned long long)offset;
        [fh3 truncateFileAtOffset:30];
        
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值