iOS学习之iOS沙盒(sandbox)机制和文件操作复习
1、iOS沙盒機(jī)制
?iOS應(yīng)用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件,不可以去其它地方訪問(wèn),此區(qū)域被成為沙盒,所以所有的非代碼文件都要保存在此,例如圖像,圖標(biāo),聲音,映像,屬性列表,文本文件等。
?1.1、每個(gè)應(yīng)用程序都有自己的存儲(chǔ)空間
?1.2、應(yīng)用程序不能翻過(guò)自己的圍墻去訪問(wèn)別的存儲(chǔ)空間的內(nèi)容
?1.3、應(yīng)用程序請(qǐng)求的數(shù)據(jù)都要通過(guò)權(quán)限檢測(cè),假如不符合條件的話,不會(huì)被放行。
? ? ?通過(guò)這張圖只能從表層上理解sandbox是一種安全體系,應(yīng)用程序的所有操作都要通過(guò)這個(gè)體系來(lái)執(zhí)行,其中核心內(nèi)容是:sandbox對(duì)應(yīng)用程序執(zhí)行各種操作的權(quán)限限制。
?
?
2、打開模擬器沙盒目錄
下面看看模擬器的沙盒文件夾在mac電腦上的什么位置。
文件都在個(gè)人用戶名文件夾下的一個(gè)隱藏文件夾里,中文叫資源庫(kù),他的目錄其實(shí)是Library。
2.1 方法1、可以設(shè)置顯示隱藏文件,然后在Finder下直接打開。設(shè)置查看隱藏文件的方法如下:打開終端,輸入命名
?
顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
輸完單擊Enter鍵,退出終端,重新啟動(dòng)Finder就可以了
重啟Finder:鼠標(biāo)單擊窗口左上角的蘋果標(biāo)志-->強(qiáng)制退出-->Finder-->
現(xiàn)在能看到資源庫(kù)文件夾了。
?
打開資源庫(kù)后找到/Application Support/iPhone Simulator/文件夾。這里面就是模擬器的各個(gè)程序的沙盒目錄了。
2.2 方法2、這種方法更方便,在Finder上點(diǎn)->前往->前往文件夾,輸入/Users/username/Library/Application Support/iPhone Simulator/ ?前往。
username這里寫你的用戶名。
3、目錄結(jié)構(gòu)
默認(rèn)情況下,每個(gè)沙盒含有3個(gè)文件夾:Documents, Library 和 tmp。因?yàn)閼?yīng)用的沙盒機(jī)制,應(yīng)用只能在幾個(gè)目錄下讀寫文件
Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時(shí)候會(huì)包括此目錄
Library:存儲(chǔ)程序的默認(rèn)設(shè)置或其它狀態(tài)信息;
Library/Caches:存放緩存文件,iTunes不會(huì)備份此目錄,此目錄下文件不會(huì)在應(yīng)用退出刪除
tmp:提供一個(gè)即時(shí)創(chuàng)建臨時(shí)文件的地方。
?
iTunes在與iPhone同步時(shí),備份所有的Documents和Library文件。
iPhone在重啟時(shí),會(huì)丟棄所有的tmp文件。
?
我們創(chuàng)建一個(gè)IosSandbox的項(xiàng)目來(lái)展開沙盒和文件讀寫等操作的練習(xí)。
創(chuàng)建后找到模擬器上對(duì)應(yīng)的目錄,
這是目錄全展開了。
??
這是上面提到的三個(gè)目錄 :Documents、Library、?tmp
?
?
我們看看如何獲取應(yīng)用程序沙盒目錄。包括真機(jī)的沙盒的目錄。
?
1、獲取程序的Home目錄
?
[cpp]?view plaincopy ??
打印結(jié)果:
那在真機(jī)上的目錄有是怎么樣的呢?我們看看
2012-06-17 14:25:47.059 IosSandbox[4281:f803]?/var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2
可見,真機(jī)上的目錄是/var/mobile/Applications/這個(gè)目錄下的,和模擬器不一樣。這個(gè)是Home目錄,其他的子目錄和模擬器一樣。
?
2、獲取document目錄
[cpp]?view plaincopy ?打印結(jié)果
?
?
[cpp]?view plaincopy ?3、獲取Cache目錄
?
?
[cpp]?view plaincopy ? 打印結(jié)果
4、獲取Library目錄
?
?
[cpp]?view plaincopy ?打印結(jié)果
[cpp]?view plaincopy ?5、獲取Tmp目錄
[cpp]?view plaincopy ?打印結(jié)果
?
?
[cpp]?view plaincopy ?6、寫入文件
[cpp]?view plaincopy ??
注:我們?cè)谡鏅C(jī)上也運(yùn)行一下,把文件寫入,下一步從真機(jī)上把內(nèi)容讀取出來(lái)。
寫入輸入 array ,里面是兩個(gè)字符串,一會(huì)我們讀出來(lái)打印。
寫入我們?cè)诔绦蛏澈心夸浵驴吹轿募?testFile.txt
?
打開文件看到的內(nèi)容是這樣的,是個(gè)xml格式的plist文件,數(shù)據(jù)格式保存了內(nèi)容。
?
[cpp]?view plaincopy ?7、讀取文件
?
?
[cpp]?view plaincopy ?打印結(jié)果:
?
把上面的文件解析后,把內(nèi)容打印出來(lái)了。
?
[cpp]?view plaincopy ??
真機(jī)上讀取并打印文件路徑:
?
2012-06-17 14:25:47.059 IosSandbox[4281:f803]?/var/mobile/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/Documents/testFile.txt
?(
?
? ? "\U5185\U5bb9",
? ? content
)
真機(jī)上也能寫入和打印。
著作權(quán)聲明:本文由http://blog.csdn.net/totogo2010/原創(chuàng),歡迎轉(zhuǎn)載分享。請(qǐng)尊重作者勞動(dòng),轉(zhuǎn)載時(shí)保留該聲明和作者博客鏈接,謝謝?
總結(jié)
以上是生活随笔為你收集整理的iOS学习之iOS沙盒(sandbox)机制和文件操作复习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最有道理的爱情励志签名大全219个
- 下一篇: [翻译] 聚集索引表 VS 堆表