iOS 獲取沙盒檔案路徑及 寫入 刪除 沙盒檔案

2021-07-29 21:32:51 字數 3160 閱讀 6759

一、沙盒中幾個主要的目錄

每個沙盒下面都有相似的目錄結構,如下圖所示(出自蘋果官方文件):

每個應用的沙盒目錄都是相似的,主要包含圖中所示的4個目錄:

①存放內容

該目錄包含了應用程式本身的資料,包括資源檔案和可執行檔案等。程式啟動以後,會根據需要從該目錄中動態載入**或資源到記憶體,這裡用到了lazy loading的思想。

②整個目錄是唯讀的

為了防止被篡改,應用在安裝的時候會將該目錄簽名。非越獄情況下,該目錄中內容是無法更改的;在越獄裝置上如果更改了目錄內容,對應的簽名就會被改變,這種情況下蘋果官網描述的後果是應用程式將無法啟動,我沒實踐過。

③是否會被itunes同步

否2、documents

①存放內容

我們可以將應用程式的資料檔案儲存在該目錄下。不過這些資料型別僅限於不可再生的資料,可再生的資料檔案應該存放在library/cache目錄下。

②是否會被itunes同步

是3、documents/inbox

①存放內容

該目錄用來儲存由外部應用請求當前應用程式開啟的檔案。

比如我們的應用叫a,向系統註冊了幾種可開啟的檔案格式,b應用有乙個a支援的格式的檔案f,並且申請呼叫a開啟f。由於f當前是在b應用的沙盒中,我們知道,沙盒機制是不允許a訪問b沙盒中的檔案,因此蘋果的解決方案是講f拷貝乙份到a應用的documents/inbox目錄下,再讓a開啟f。

②是否會被itunes同步

是4、library

①存放內容

蘋果建議用來存放預設設定或其它狀態資訊。

②是否會被itunes同步

是,但是要除了caches子目錄外

5、library/caches

①存放內容

主要是快取檔案,使用者使用過程中快取都可以儲存在這個目錄中。前面說過,documents目錄用於儲存不可再生的檔案,那麼這個目錄就用於儲存那些可再生的檔案,比如網路請求的資料。鑑於此,應用程式通常還需要負責刪除這些檔案。

②是否會被itunes同步

否。6、library/preferences

①存放內容

應用程式的偏好設定檔案。我們使用nsuserdefaults寫的設定資料都會儲存到該目錄下的乙個plist檔案中,這就是所謂的寫道plist中!

②是否會被itunes同步

是7、tmp

①存放內容

各種臨時檔案,儲存應用再次啟動時不需要的檔案。而且,當應用不再需要這些檔案時應該主動將其刪除,因為該目錄下的東西隨時有可能被系統清理掉,目前已知的一種可能清理的原因是系統磁碟儲存空間不足的時候。

②是否會被itunes同步

否//獲取documents路徑

nsarray*paths=nssearchpathfordirectoriesindomains(nsdocumentdirectory,nsuserdomainmask,yes);

nsstring*path=[paths objectatindex:0];

nslog(@"path:%@",path);

//獲取library路徑

nsarray*paths=nssearchpathfordirectoriesindomains(nslibrarydirectory,nsuserdomainmask,yes);

nsstring*path=[paths objectatindex:0];

nslog(@"path:%@",path);

//獲取caches路徑

nsarray*paths=nssearchpathfordirectoriesindomains(nscachesdirectory,nsuserdomainmask,yes);

nsstring*path=[paths objectatindex:0];

nslog(@"path:%@",path);

//獲取tmp路徑

nsstring*tmp=nstemporarydirectory();

nslog(@"tmp:%@",tmp);

-(void)photofile

//此處的方法是將寫到documents檔案中 如果寫入成功會彈出乙個警告框,提示儲存成功

nsstring *strpathold = [[nsbundle mainbundle] pathforresource:@"pin" oftype:@"png"];

nsdata *data = [nsdata datawithcontentsoffile:strpathold];

bool result = [data writetofile:uniquepath atomically:yes];

if (result) else

}// 刪除沙盒裡的檔案

-(void)deletefile else else }}

//向沙盒裡 寫入資料夾,並向資料夾裡 寫入東西

nsfilemanager *filemanager = [nsfilemanager defaultmanager];

nsstring *document = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) objectatindex:0];

if (![filemanager fileexistsatpath:folder]) else

}else

if (![filemanager fileexistsatpath:filepath]) else

}//得到沙盒資料夾 下的所有檔案

nsfilemanager *filemanager = [nsfilemanager defaultmanager];

nsstring *document=[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) objectatindex:0];

nsarray *filelist ;

filelist =[filemanager contentsofdirectoryatpath:folder error:null];

for (nsstring *file in filelist)

iOS經典講解之獲取沙盒檔案路徑寫入和讀取簡單物件

import rootviewcontroller.h inte ce rootviewcontroller end 實現檔案 implementation rootviewcontroller void viewdidload 列印沙盒中的資料夾路徑 void path 簡單物件引入檔案 注意如果...

iOS沙盒路徑

ios沙河路徑極其作用 documents 儲存使用者資料,itunes備份會包括此目錄下資料。library 包含兩個子目錄 caches 和 preferences。caches 存放使用者需要快取的資料 快取需要有清理操作 tmp 用於存放臨時檔案,此目錄下檔案可能會在應用退出後刪除。檢視路徑...

iOS沙盒路徑

ios的沙盒下面主要包含該以下三個檔案 documents library 內含caches和preferences temp。home目錄 nsstring homedirectory nshomedirectory 1.documents 簡介該目錄會被itunes自動備份,建議儲存需要持久化儲...