沙盒檔案
每個ios
應用都有自己的應用沙盒,應用沙盒就是檔案系統目錄,與其他應用的檔案系統隔離,
ios系統不允許訪問其他應用的應用沙盒。在
ios8
中已經開放訪問。
應用沙盒一般包括以下幾個檔案目錄:應用程式包、
documents
、libaray
(下面有
caches
和preferences
目錄)、
tmp。
應用程式包
:包含所有的資源檔案和可執行檔案。
documents
:儲存應用執行時生成的需要持久化的資料,
itunes
會自動備份該目錄。蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下,
itunes
備份和恢復的時候會包括此目錄
tmp:
儲存應用執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也有可能會清除該目錄下的檔案,
itunes
不會同步該目錄。
iphone
重啟時,該目錄下的檔案會丟失。
library
:儲存程式的預設設定和其他狀態資訊,
itunes
會自動備份該目錄。
libaray/caches:
存放快取檔案,
itunes
不會備份此目錄,此目錄下檔案不會在應用退出刪除。一般存放體積比較大,不是特別重要的資源。
libaray/preferences:
儲存應用的所有偏好設定,
ios的
settings
(設定)應用會在該目錄中查詢應用的設定資訊,
itunes
會自動備份該目錄。
沙盒檔案目錄獲取**:
//home
目錄nsstring *homedirectory = nshomedirectory();
//document
目錄nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);
nsstring *path = [paths objectatindex:0];
//cache
目錄nsarray *paths = nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes);
nsstring *path = [paths objectatindex:0];
//libaray
目錄nsarray *paths = nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes);
nsstring *path = [paths objectatindex:0];
//tmp
目錄nsstring *tmpdir = nstemporarydirectory();
資料夾操作
建立資料夾:
沙盒資料夾操作使用系統
foundation
框架下的
nsfilemanager
檔案操作類實現。在沙盒中新建資料夾,需指定新建資料夾的絕對路徑,然後手動建立。並且要保證新建資料夾的上級路徑已經存在,否則需要先建立上級資料夾路徑。資料夾的建立使用
createdirectoryatpath
方法。新建資料夾**:
if ([[nsfilemanager defaultmanager] fileexistsatpath:createpath])//
判斷createpath
路徑資料夾是否已存在,此處
createpath
為需要新建的資料夾的絕對路徑
else p
s:如何保證新建資料夾的父親資料夾已經存在,
ios的
foundation
框架中的
nspathutilities
類中提供了一些操作路徑
string
的方法。
stringbydeletinglastpathcomponent
:去掉路徑中的最後一級成員
比如pp/ppp/pppp
操作過後則為:
pp/ppp
pathcomponents
:拆分路徑
比如pp/ppp/pppp
執行後得到乙個
nsarray
陣列,裡面有三個元素為
pp ppp pppp
。lastpathcomponent
:獲取路徑中的最後一級檔名
相關方法還有很多,可參考
nspathutilities
類。刪除資料夾:
刪除資料夾,需先判定該資料夾是否存在(使用
fileexistsatpath
方法),如果存在,執行刪除操作(使用
removeitematpath
)。刪除資料夾**:
if([[nsfilemanager defaultmanager] fileexistsatpath:pathfull])//
如果存在臨時檔案的配置檔案
移動資料夾:
資料夾移動需要兩個引數,資料夾原絕對路徑與目標絕對路徑。使用
moveitematpath
方法實現
移動資料夾**:
if([filemanager moveitematpath:prepath topath:cenpath error:&error]!=yes)// prepath
為原路徑、
cenpath
為目標路徑
else
ps:資料夾移動需要注意的是,要確保目標路徑中除了目標資料夾之外的路徑確實存在。否則移動到乙個還沒有建立的資料夾下,是會失敗的,這和建立資料夾是一樣的。
重新命名資料夾:
重新命名資料夾也需要兩個引數,原絕對路徑與目標絕對路徑,用了乙個偷換概念的方式來實現,其實用的是移動資料夾的方法。不贅述。
獲取目錄下的所有檔名稱(包括資料夾與檔案):
nsarray *filenamelist=[[nsfilemanager defaultmanager] contentsofdirectoryatpath:imagesfolder error:nil];// filenamelist
中即為該
imagesfolder
資料夾下的所有檔案的名稱陣列
檔案操作:
寫入檔案:
寫入檔案需要首先判定該檔案的父親資料夾是否存在,存在則可以進行寫入,否則需首先建立父親
路徑。使用
writetofile
方法。寫入檔案的同時,系統會自動建立檔案。
一般資料型別,比如陣列、字典、
nsdata
、nsstring
都可以直接呼叫
writetofile
方法寫入檔案。
**:[arraya writetofile:filepath atomically:yes];
也可以手動建立檔案:
[filemanager createfileatpath:destinationpath contents:[string datausingencoding:nsutf8stringencoding] attributes:nil]
讀取檔案:
如果使用者知道檔案內容的資料型別比較規整,則可以直接讀取檔案內容到標準資料結構中。
nsarray *arraya = [[nsarray alloc]initwithcontentsoffile:filepath];
ps:或許有些時候,需要用到混合資料的寫入與讀取,可以使用
nsmutabledata
實現。參考**
25 沙盒 檔案管理者
1.獲取沙盒路徑 動態獲取document目錄 nsstring doc nssearchpathfordirectoriesindomains nsdocumentdirectory,nsuserdomainmask,yes lastobject 建立資料夾 建立檔案管理者 nsfilemanag...
沙盒檔案儲存
1.plist檔案的訪問 1.1 document的目錄搜尋 1.拼接字串 nsstring homepath nshomedirectory 獲得沙盒路徑 2.系統提供的搜尋 searchpath 搜尋路徑 fordirectories 哪個資料夾 indomains 在哪搜尋 nsstring ...
沙盒 檔案操作
documents 儲存應用執行時生成的需要持久化的資料,itunes會自動備份該目錄。蘋果建議將程式中建立的或在程式中瀏覽到的檔案資料儲存在該目錄下,itunes備份和恢復的時候會包括此目錄 tmp 儲存應用執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也有可能會...