ios 儲存學習筆記

2022-05-07 14:39:10 字數 4380 閱讀 6866

一、主要路徑:

library/caches/

此檔案用於儲存那些需要及可延遲或重建立的臨時資料.且這些內容不會被ios 系統

備份,特別地,當裝置磁碟空間不足且應用不在執行狀態時,ios 系統可能會移除此檔案

夾中的內容!所以,不要讓你的應用太依賴此資料夾中的內容;

二、獲取路徑的方法:

nsfilemanager *filemanager = [[nsfilemanager alloc] init];

nsarray *urls = [filemanager urlsfordirectory:nsdocumentdirectory

indomains:nsuserdomainmask];

urlsfordirectory可以取下面幾個值:

nslibrarydirectory

標記應用的library資料夾.

nscachesdirectory

標記caches資料夾,在之前解釋說明過.

nsdocumentdirectory

標記document資料夾.

indomains取值:

nsuserdomainmask

標記對資料夾路徑的搜尋在當前使用者資料夾下進行.

獲取tmp的方式有所不同:

nsstring *tempdirectory = nstemporarydirectory();

拼接路徑:

三、寫檔案的方法:

1.部分類有簡單的儲存方法,例如nsstring,uiimage及nsdata,nsarray,nsdictionary

writetourl:atomically:encoding:error:

bool succeeded = [sometext writetofile:destinationpath atomically:yes encoding:nsutf8stringencoding error:&error];

函式說明:

writetofile

字串型別的檔案儲存路徑(上面函式使用url型別的引數).

atomically

乙個boolean值,如果設定為yes,則檔案首先會被儲存到乙個臨時空間,然

後此臨時檔案才會被移到你所設定的目標路徑.這樣可以確保檔案內容被儲存

到目標路徑之前會首先被儲存到磁碟某處,此時,即使ios系統在檔案被移到

最終的目標路徑前崩潰,你的資料內容在作業系統稍後恢復時仍將得到儲存.

,推薦設定此值為yes,以確保你在儲存資料時不因應用執行異常情況導致數

據丟失.

encoding

要儲存到目標路徑的文字字元編碼.一般使用nsutf8stringencoding.

2.建立和檔案的資料夾的方法:

資料夾:使用類nsfilemanager的例項方法 

createdirectoryatpath:withintermediatedirectories:attributes:error:

withintermediatedirectorys

乙個boolean值,如果設定為yes,則在建立最深層檔案前,將會建立所有的父

資料夾。

attributes

乙個傳遞給系統可以影響資料夾將如何建立的屬性字典.如資料夾修改日期及時

間,建立日期及時間及其希望修改的屬性.

檔案:

createfileatpath:contents:attributes

3.列舉資料夾:

使用類nsfilemanager例項方法來列舉資料夾下所有的檔案,資料夾及符號鏈結.

contentsofdirectoryatpath:error:

為了從檔案管理器物件獲得更細粒度的檔案資訊,呼叫

contentsofdirectoryaturl:includingpropertiesforkeys:opinions:error:

contentsofdirectoryaturl

準備遍歷的資料夾路徑.此路徑需要傳遞為乙個nsurl例項

includingpropertiesforkeys

傳遞乙個你希望ios系統為在目標資料夾下遍歷到的檔案,資料夾或其他專案返

回的屬性陣列值.引數的列表:

nsurlisdirectorykey

稍後允許你判斷遍歷到的url所指物件是否是目錄.

nsurlisreadablekey

稍後允許你判斷遍歷到的url所指專案對你的應用是否可讀.

nsurlcreateiondatekey

返回遍歷到專案的建立日期.

nsurlcontentaccessdatekey

返回遍歷到專案內容的最後訪問日期.

nsurlcontentmodificationdatekey

如同引數名所表示的,此引數允許你判斷遍歷返回的url所指專案的最後

修改時間.

options

此引數只允許0或nsdirectoryenumerationskiphiddenfiles值傳入.如果傳入的

後面這個引數,所有檔案在列舉時將被忽略.

- (nsdate *) dateoftype:(nsstring *)paramtype inurl:(nsurl *)paramurl

return

result;

}

nslog(@"

creation date = %@",

[self dateoftype:nsurlcreationdatekey inurl:paramurl]);

4.刪除檔案或資料夾:

使用nsfilemanager類的例項方法removeitematpath:error:或removeitematurl.前一

個方法傳遞乙個字串型別的路徑,後乙個傳遞乙個url指向的路徑。

5.檔案控制代碼filehandle :

filehandleforupdatingatpath:

開啟檔案並獲得讀寫許可權,此將把檔案指標放在檔案的起始處.

filehandleforreadingatpath:

開啟檔案並只具有讀取許可權.

filehandleforwritingatpath:

開啟檔案並只具有寫許可權.

對nsfilemanger的補充:

readdataoflength:

返回乙個nsdata物件,包含從檔案讀取到的n位元組.

writedata:

把指定的nsdata物件寫到檔案.

6.普通的object儲存:

首先object的屬性要是基本屬性或是實現了nscoding協議的屬性,其次object本身也要實現nscoding

nskeyedarchiver

乙個利用鍵值來歸檔或儲存物件或物件樹的類.很像乙個字典.

nskeyedunarchiver

此類進行與歸檔類相反的操作.

例子:

#import

"person.h

"nsstring *const kfirstnamekey = @"

firstnamekey";

nsstring *const klastnamekey = @"

lastnamekey";

@implementation

person

- (void)encodewithcoder:(nscoder *)acoder

- (id)initwithcoder:(nscoder *)adecoder

return

self;

}@end

person *stevejobs =[[person alloc] init];

stevejobs.firstname =kfirstname;

stevejobs.lastname =klastname;

/*archive the object to the file

*/[nskeyedarchiver archiverootobject:stevejobs tofile:filepath];

/*now unarchive the same class into another object

*/person *cloneofstevejobs =[nskeyedunarchiver unarchiveobjectwithfile:filepath];

其實此工作完全可以將物件序列化成json字串儲存,然後讀出後進行反序列化還原成原資料。

四、讀檔案方法:

- (nsstring *) readtextfrompath:(nsstring *)parampath

IOS學習筆記 檔案載入和儲存

以下是將屬性列表檔案plist資料內容以二進位制形式寫入檔案的 void writecapitols void 如你所見,我們將陣列資料轉換成了nsdata型別並寫入了檔案中。將資料讀取回記憶體要多執行一步,即指定檔案的型別。我們建立了乙個指標,如果檔案格式與指定的型別不同,可以換用原格式型別的指標...

iOS檔案儲存學習

viewcontroller.m makestrong created by momingqi on 2019 7 15.import viewcontroller.h import import import import inte ce user nsobject property nsinte...

Ios本地儲存(筆記)

乙個應用程式包含以下三個檔案 nsbundle 包 nsbundle資料夾 用來儲存建立工程時候,或者是開發時候所新增的檔案和 也就是工程中左面所有多東西 在 執行的過程中,裡面的所有東西是全都不能修改。documents資料夾 儲存的是在整個應用程式生命週期內一直存在的內容 5g以內 libray...