OC關於NSFileHandle的解析

2021-07-04 15:40:30 字數 2262 閱讀 5081

//

讀取檔案

//以唯讀的方式開啟乙個檔案,生成檔案控制代碼,目的是讀取檔案的內容

//檔案控制代碼就是檔案在記憶體中的**人

//從檔案控制代碼裡讀,就是從檔案裡讀

//同乙個nsfilehandle物件,第一次讀取之後,第二次讀取會接著第一讀取結束的節點開始讀取

nsfilehandle * filehandle=[nsfilehandle

filehandleforreadingatpath:path];

#pragma mark - 讀取檔案 //

讀取到檔案尾

nsdata * data =[filehandle readdatatoendoffile];

//data轉字串,前提是你確定資料真的是字串

nsstring

* str = [[

nsstring

alloc] initwithdata:data encoding:nsutf8stringencoding];

nslog(@"%@",str);

#pragma mark 補充方法

//字串轉data

nsdata

*data2=[str datausingencoding:nsutf8stringencoding];

nsdata * data3 = [[nsdata

alloc] initwithcontentsoffile:path];

//nsdata只能一口氣把檔案中的內容讀出來,占用記憶體高

#pragma mark - 選擇讀取檔案的大小 //

讀取80位元組

nsdata * data5 =[filehandle readdataoflength:80];

nsstring

*str5=[[

nsstring

alloc] initwithdata:data5 encoding:nsutf8stringencoding];

//這個init方法沒有對應的stringwith方法

nslog(@"%@",str5);

#pragma mark  再選擇120位元組,會接著第一次的進度,繼續讀

nsdata * data6 = [filehandle readdataoflength:120];

//第二次讀取,會接著第一次的進度,繼續讀

nsstring

* str6 = [[

nsstring

alloc] initwithdata:data6 encoding:nsutf8stringencoding];

nslog(@"%@",str6);

#pragma mark - 定為到那開始讀

//定位讀/寫進度到檔案的某個位元組

[filehandle seektofileoffset:80];

//offet 表示偏移量 80表示讀取進度為開始到80位元組的節點

nsdata * data7 = [filehandle readdataoflength:120];

nsstring

*str7=[[

nsstring

alloc] initwithdata:data7 encoding:nsutf8stringencoding];

nslog(@"%@",str7);

#pragma mark - 寫入檔案

nsfilehandle * filehandlew = [nsfilehandle

filehandleforwritingatpath:path];

//將字串轉化為二進位制資料報nsdata

nsdata * data = [@"

帶我飛~" datausingencoding:nsutf8stringencoding];

#pragma mark 定位檔案尾

//[filehandlew seektoendoffile];

#pragma mark 定位到某一位元組,該位元組數可以大於當前檔案大小

[filehandlew seektofileoffset:120];

#pragma mark 清空原始檔資料

[filehandlew truncatefileatoffset:0];

#pragma mark 將資料寫入檔案

[filehandlew writedata:data];

#pragma mark  多次寫入。每次寫入會繼續上次的進度,但是每次開啟檔案控制代碼,就會從頭寫入

[filehandlew writedata:data];

OC學習之道 關於OC的屬性的介紹

本人最糾結的就是屬性的一些細節,看注釋 main.m import import student.h int main int argc,const char argv nsstring name 在這裡簡單說一下 object和object的區別。object是myclass類的成員變數,obje...

關於OC記憶體管理 03

1.對於上篇文章,物件的例項變數 oc物件型別 的setter方法,只是執行一次retain操作,則這個程式是有缺陷的。可以想到的是,如果我們不小心在main.m裡多執行了一次 p.book b,則我們又執行了一次retain操作,此時計數器又加上了1,不符合記憶體管理原則。但是如何修改呢。我們可以...

關於swift和OC混編

啦啦 最近沒啥事情做就開始幹swift了,然後就 混編的各種問題接肘而來,1.如何在swift中使用oc 但是如果手抖點錯的話,那麼就只能自己手動建立了,1.1 建立乙個.h檔案 名字隨便取 1.2 然後在project build setting 搜尋bridge 1.3 將建立的.h路勁填充進去...