ios沙箱模式開啟 iOS的沙箱目錄和檔案操作

2021-10-13 11:52:43 字數 3123 閱讀 5974

一、沙箱

ios的每乙個應用程式都有自己的目錄來存放資料,這個目錄稱為沙箱目錄。沙箱目錄是一種資料安全策略,它設計的原理是只能允許自己的應用訪問目錄,而不允許其他的應用訪問,這樣可以保證資料的安全,應用之間是不能共享資料的。

一些特有的應用(如通訊錄)需要特定的api才能共享資料。

下面簡單介紹一下,應用程式的沙箱目錄,先直觀的看一下演示程式的沙箱目錄結構。

該應用程式的沙箱路徑為:

我們可以看到,該沙箱目錄有三個子目錄,分別為documents,library,tmp

1、documents

該目錄用於儲存非常大的檔案或需要非常頻繁更新的資料,能夠進行itunes或icloud備份。該目錄是只有乙個元素的陣列,因此獲取該目錄位置的**如下:

nsstring *documentpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

2、library

該目錄下面有 preferences和caches兩個子目錄,preferences用於存放應用程式的設定資料,能夠進行itunes或icloud備份;caches主要用來存放應用的快取檔案,itunes不會備份。

獲取library目錄位置的**如下:

nsstring *librarypath = [nssearchpathfordirectoriesindomains(nslibrarydirectory, nsuserdomainmask, yes) lastobject];

獲取preferences目錄位置的**如下:

nsstring *preferencepath = [nssearchpathfordirectoriesindomains(nspreferencepanesdirectory, nsuserdomainmask, yes) lastobject];

獲取caches目錄位置的**如下:

nsstring *cachepath = [nssearchpathfordirectoriesindomains(nscachesdirectory, nsuserdomainmask, yes) lastobject];

3、tmp

該目錄是用來存放臨時檔案的,它不能夠進行itunes或icloud備份。使用者可以訪問它,獲取該目錄的**如下:

nsstring *tmppath = nstemporarydirectory();

二、檔案操作

1、建立資料夾

我們在documents目錄下建立test資料夾

nsstring *documentpath =[nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

nslog(@"document資料夾路徑為%@",documentpath);

nsfilemanager*filemanager =[nsfilemanager defaultmanager];

bool issuccess=[filemanager createdirectoryatpath:testpath withintermediatedirectories:yes attributes:nil error:nil];

nslog(@"成功建立資料夾了嗎:%@",issuccess?@"yes":@"no");

建立成功

2、建立檔案

接著上面的**,我們在test資料夾下建立檔案test.txt

bool istxtsuccess=[filemanager createfileatpath:txtpath contents:nil attributes:nil];

nslog(@"成功建立檔案了嗎:%@",istxtsuccess?@"yes":@"no");

建立成功

可以看到test.txt還是空的,下面我們寫入資料。

3、寫資料到檔案

nsstring *teststring = @"hello world?";

bool iswritesuccess=[teststring writetofile:txtpath atomically:yes encoding:nsutf8stringencoding error:nil];

nslog(@"成功寫入資料了嗎:%@",iswritesuccess?@"yes":@"no");

寫入成功

4、讀取檔案

下面我們讀取我們剛剛建立的test.txt檔案的內容

nsstring *readstring =[nsstring stringwithcontentsoffile:txtpath encoding:nsutf8stringencoding error:nil];

nslog(@"讀取到的檔案內容為%@",readstring);

成功讀取

5、刪除檔案

bool isdeletesuccess =[filemanager removeitematpath:txtpath error:nil];

nslog(@"成功刪除檔案了嗎:%@",isdeletesuccess?@"yes":@"no");

刪除成功

6、計算路徑下檔案的總大小

+(float)sizewithfilepath:(nsstring *)path

nsfilemanager*filemanager =[nsfilemanager defaultmanager];

bool isdirectory=no;/*下面方法返回兩個引數

i***ist:該路徑是否存在

isdirectory:該路徑下是否是資料夾*/bool i***ist= [filemanager fileexistsatpath:path isdirectory:&isdirectory];if (!i***ist)

//如果是資料夾則遍歷出檔案

if(isdirectory)

else//nslog(@"清除之後檔案大小為%.2fmb",[fzyfilemanager sizewithfilepath:path]);

dispatch_sync(dispatch_get_main_queue(), ^{//[fzyfilemanager cleansuccess];

ios沙箱軟體 IOS沙箱操作

沙盒的內容 包1.h m 目標 檔案 2.info.list 3.images.xasset place.png 4.launch image 啟 片等等 data container 1 documents 目錄 itunes 備份 這個 目錄 用於儲存 使用者資料或其它應該定期備份的 資訊,蘋果...

ios沙箱軟體 iOS 開發之沙盒機制

1.ios 沙盒機制簡介 沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制 ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用...

ios沙箱軟體 iOS app ipa 與 沙盒

documents 儲存應用執行時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄 獲取路徑方法 nsstring documents nssearchpathfordirectoriesindomains nsdocumentdirectory,1...