一、主要路徑:
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 *)paramurlreturn
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...