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;
}


發佈了71 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章