iOS 檔案操作詳解

2021-06-27 01:51:35 字數 4766 閱讀 4598

2、documents 目錄就是我們可以用來寫入並儲存檔案得地方,一般可通過: nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, 

nsuserdomainmask, yes);nsstring *documentsdirectory = [paths objectatindex:0];  

得到。 3、tmp 目錄我們可以在裡面寫入一些程式執行時需要用得資料,裡面寫入得資料在程式退出後會沒有。可以通過nsstring *nstemporarydirectory(void); 方法得到; 

4、檔案一些主要操作可以通過nsfilemanage 來操作,可以通過 [nsfilemanger defaultmanger] 得到它得例項。 

相關得一些操作: 

建立乙個目錄:比如要在documents下面建立乙個test目錄, nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);  

nsstring *documentsdirectory = [paths objectatindex:0];  

nslog(@」%@」,documentsdirectory);  

nsfilemanager *filemanage = [nsfilemanager defaultmanager];  

bool ok = [filemanage createdirectoryatpath:mydirectory withintermediatedirectories:yes attributes:nil error:nil]; 

取得乙個目錄下得所有檔名:(如上面的mydirectory)可用 nsarray *file = [filemanager subpathsofdirectoryatpath: mydirectory error:nil];  

或  nsarray *files = [filemanager subpathsatpath: mydirectory ];  

讀取某個檔案: nsdata *data = [filemanger contentsatpath:myfilepath];//myfilepath是包含完整路徑的檔名或直接用nsdata 的類方法:  

nsdata *data = [nsdata datawithcontentofpath:myfilepath];  

儲存某個檔案: 

可以用 nsfilemanager的 - (bool)createfileatpath:(nsstring *)path contents:(nsdata *)data attributes:(nsdictionary *)attr;  

或 nsdata 的  

- (bool)writetofile:(nsstring *)path atomically:(bool)useauxiliaryfile;  

- (bool)writetofile:(nsstring *)path options:(nsuinteger)writeoptionsmask error:(nserror **)errorptr;  

nsfilemanager中包含了用來查詢單詞庫目錄、建立、重新命名、刪除目錄以及獲取/設定檔案屬性的方法(可讀性,可編寫性等等)。 

每個程式都會有它自己的沙盒,通過它你可以閱讀/編寫檔案。寫入沙盒的檔案在程式的程序中將會保持穩定,即便實在程式更新的情況下。 

如下所示,你可以在沙盒中定位檔案目錄: //對於錯誤資訊  

nserror *error;  

// 建立檔案管理器  

nsfilemanager *filemgr = [nsfilemanagerdefaultmanager];  

//指向檔案目錄  

nsstring *documentsdirectory= [nshomedirectory()  

//建立乙個目錄  

[[nsfilemanager defaultmanager]  

createdirectoryatpath: [nsstring stringwithformat:@"%@/myfolder", nshomedirectory()]  

attributes:nil];  

建立乙個檔案 

現在我們已經有了檔案目錄,我們就能使用這個路徑在沙盒中建立乙個新檔案並編寫一段**: // file we want to create in the documents directory我們想要建立的檔案將會出現在檔案目錄中  

// result is: /documents/file1.txt結果為:/documents/file1.txt  

nsstring *filepath= [documentsdirectory  

//需要寫入的字串  

//寫入檔案  

[str writetofile:filepath atomically:yes  

encoding:nsutf8stringencoding error:&error];  

//顯示檔案目錄的內容  

nslog(@"documentsdirectory: %@",  

[filemgr contentsofdirectoryatpath:documentsdirectoryerror: &error]);  

我們為想要建立的檔案構建一條路徑(file1.txt),初始化乙個字串來寫入檔案,並列出目錄。最後一行顯示了在我們建立檔案之後出現在檔案目錄下的乙個目錄列表: 

對乙個檔案重新命名 

想要重新命名乙個檔案,我們需要把檔案移到乙個新的路徑下。下面的**建立了我們所期望的目標檔案的路徑,然後請求移動檔案以及在移動之後顯示檔案目錄。 //通過移動該檔案對檔案重新命名  

nsstring *filepath2= [documentsdirectory  

//判斷是否移動  

if ([filemgr moveitematpath:filepath topath:filepath2 error:&error] != yes)  

nslog(@"unable to move file: %@", [error localizeddescription]);  

//顯示檔案目錄的內容  

nslog(@"documentsdirectory: %@",  

[filemgr contentsofdirectoryatpath:documentsdirectoryerror: &error]);  

在移動了檔案之後,輸出結果應該如下圖所示:  

刪除乙個檔案  

為了使這個技巧完整,讓我們再一起看下如何刪除乙個檔案:  

//在filepath2中判斷是否刪除這個檔案  

if ([filemgr removeitematpath:filepath2 error:&error] != yes)  

nslog(@"unable to delete file: %@", [error localizeddescription]);  

//顯示檔案目錄的內容  

nslog(@"documentsdirectory: %@",  

[filemgr contentsofdirectoryatpath:documentsdirectoryerror: &error]);  

一旦檔案被刪除了,正如你所預料的那樣,檔案目錄就會被自動清空: 

這些示例能教你的,僅僅只是檔案處理上的一些皮毛。想要獲得更全面、詳細的講解,你就需要掌握nsfilemanager檔案的知識。 

在開發iphone程式時,有時候要對檔案進行一些操作。而獲取某乙個目錄中的所有檔案列表,是基本操作之一。通過下面這段**,就可以獲取乙個目錄內的檔案及資料夾列表。 nsfilemanager *filemanager = [nsfilemanager defaultmanager];  

//在這裡獲取應用程式documents資料夾裡的檔案及資料夾列表  

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

nsstring *documentdir = [documentpaths objectatindex:0];  

nserror *error = nil;  

nsarray *filelist = [[nsarray alloc] init];  

//filelist便是包含有該資料夾下所有檔案的檔名及資料夾名的陣列  

filelist = [filemanager contentsofdirectoryatpath:documentdir error:&error];  

以下這段**則可以列出給定乙個資料夾裡的所有子資料夾名  

nsmutablearray *dirarray = [[nsmutablearray alloc] init];  

bool isdir = no;  

//在上面那段程式中獲得的filelist中列出資料夾名  

for (nsstring *file in filelist)   

isdir = no;   }  

nslog(@"every thing in the dir:%@",filelist);  

nslog(@"all folders:%@",dirarray);  

iOS 檔案操作

void dirhomedocuments 蘋果建議將程式建立產生的檔案以及應用瀏覽產生的檔案資料儲存在該目錄下,itunes備份和恢復的時候會包括此目錄 library 儲存程式的預設設定或者其他狀態資訊 library caches 存放快取檔案,儲存應用的持久化資料,用於應用公升級或者應用關閉...

iOS 檔案操作

下面整段 你直接就可以用,具體看看好好看看問題,我也是看別人的。孰能生巧。nsstring 類,寫了幾個簡單操作呼叫系統函式。列印nsstring,nsarray物件。i 整數 f 浮點 nsfilemanager filemanager nsfilemanager defaultmanager n...

ios 檔案操作

在今天的最後一節內容中讓我們看一下foundation中檔案操作,下面將以乙個例子進行說明 main.m foundationframework created by fsh on 15 11 12.年 import 目錄操作 void test1 目錄重新命名,如果需要刪除目錄只要呼叫remove...