最近在學習 ios開發中的資料持久化裡的檔案讀取 以下是自己的寫的一點東西 還請各位看官老爺多多指點
ios在進行資料持久化中採用沙盒, 不允許非本應用程式以外的其他應用程式訪問該應用系統的一些檔案.ios8以後沙盒許可權不再像以前那麼嚴格 .
在進行本地檔案讀取操作中, 首先需要明確 路徑 這個 詞
我們來列印一下 沙盒的路徑
nslog(@"%@", nshomedirectory());
獲取後 複製 回到桌面 左上角 前往 下面的 前往資料夾 把剛才的位址貼上上去 或者 回到桌面 cmd + shift + g 快捷方式貼上 剛才的路徑 可以看到 三個資料夾
每個沙盒下邊都有三個資料夾
documents library tmp
每個路徑下邊都可以進行持久化
documents
最常用的持久化路徑
, 儲存一些不是太大的檔案
, eg.plist
檔案,
文字檔案
,sqlite
檔案documents
上的檔案將來要跟
ituns
進行同步
,放置太大的檔案就會給蘋果伺服器造成太大的壓力
,會被拒絕.
library
把大容量的資料放置到
library
中的cache
下邊, library
在開發工程中很少被直接使用
,cache
路徑上的檔案是不與
itunes
進行同步的.()
preferences
這個路徑上的檔案也是進行同步的
, 這個檔案中一般儲存一些使用者的設定
.(也可以用來判斷使用者
是否第一次安裝該軟體)
tmp 特性,
這是乙個臨時路徑
,不進行同步
,裡邊放的資料當時被重新啟動時
, 資料就會被清空
. //如何獲取document的路徑
//第一種方法
nslog(@"documentpath1 = %@", documentpath1);
//第二種方法 採用 component
component
也是用來拼接
, 唯一不同 就是我們不用寫 /
nslog(@"documentpath2 = %@", documentpath2);
//使用方法 獲取documents的路徑 使用者沙盒總目錄固定不變
nsstring *getdocpath = [ nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) firstobject];
nslog(@"****%@", getdocpath);
//獲取
cache
的路徑
nsstring *getcachepath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) firstobject];
nslog(@"getcachepath = %@", getcachepath);
//但是在實際開發中,一般不採用找到該路徑的方法去操作,而是採用nsuserdefaults
nsuserdefaults *userdefaults= [nsuserdefaults standarduserdefaults];
//系統寫好的單例
[userdefaults setobject:@"我樂意
" forkey:@"不美不萌
"]; //
獲取tmp的
nsstring *tmppath = nstemporarydirectory();
nslog(@"tmppath = %@", tmppath);
接下來,就開始進入正題,怎樣 正確的對一些簡單的資料進行讀寫操作呢 以字串, 陣列,字典為例
//字串的讀寫
nsstring *writestr = @"不美不萌我樂意 ";//把
writestr
寫入檔案 //
想捕獲錯誤
就得先宣告物件,
nserror *error = nil;
//取位址的
error
bool writeresult = [writestr writetofile:filepath atomically:yes encoding:nsutf8stringencoding error:&error];
//寫成
yes之後
,在一些極端條件下可以起到保護作用
,yes
相當於把資料寫到乙個新的檔案當中
,成功之後
,系統幫我們完成替換,寫成
no,
相當於直接向檔案中寫
(把之前寫的資料清空
)if (writeresult == yes) else
//陣列寫入
nsarray *array = @[@"shanshan",@"cyd"];
bool arrayresult = [array writetofile:arraypath atomically:yes];
if (arrayresult) else
//陣列讀取 兩種方法
//1//
獲取檔案的編碼方式 nsstringencoding 屬於 列舉
nsstringencoding encode = 0;
nsstring *readstr = [nsstring stringwithcontentsoffile:filepath usedencoding:&encode error:nil];
nslog(@"readstr = %@, encode = %ld", readstr, encode);
//2
nsstring *readstr = [nsstring stringwithcontentsoffile:filepath encoding:nsutf8stringencoding error:nil];
nslog(@"readstr = %@", readstr);
//讀取陣列
nsarray *readarray = [nsarray arraywithcontentsoffile:arraypath];
nslog(@"readarray = %@", readarray);
//字典讀寫
nsdictionary *dic = @;
bool dicresult = [dic writetofile:dicpath atomically:yes];
if (dicresult == yes) else
nsdictionary *readdic = [nsdictionary dictionarywithcontentsoffile:dicpath];
nslog(@"readdic = %@", readdic);
寫入 讀取檔案
file類下面的方法 string str file.readalltext aa.txt system.text.encoding.getencoding utf 8 讀取檔案 console.writeline str console.read filestream類下面的方法 在當前目錄建立乙...
讀取寫入檔案
file1 open c users administrator desktop text 成績.txt w encoding gbk file1.write 羅恩 23 35 44 哈利 60 77 68 88 90 馬赫 97 99 89 91 95 99 媽富爾 100 85 90 file1...
檔案讀取 寫入
這是我為了記錄知識隨寫,不喜勿噴 步驟 1.建立檔案流 filestream fs new filestream 路徑名稱 filemethod.提交方式,fileaccess.獲取方式 2.建立讀寫器 文文檔案讀 streamreader sr new streamreader fs 二進位制檔案...