oc自學 使用檔案

2021-07-05 05:12:46 字數 2529 閱讀 2341

foundation框架允許你利用檔案系統對檔案或目錄執行基本操作。這些操作是有nsfilemanager類提供的,具有如下功能:建立乙個新檔案,從現有檔案中讀取資料,將資料寫入檔案,重新命名檔案,刪除檔案,測試檔案是否存在,確定檔案的大小和其他屬性,複製檔案,測試兩個檔案的內容是否相同。

上面的多數方法也可以對目錄進行操作,另乙個重要特性是鏈結檔案,即同乙個檔案存在兩個不同的名字,有時甚至位於不同的目錄中。

使用nsfilehandle類提供的方法,可以開啟檔案並對檔案執行多次讀/寫操作。nsfilehandle類可以實現如下功能:開啟乙個檔案,執行讀、寫或更新操作,在檔案中查詢指定位置,從檔案中讀取特定數目的位元組,或將指定數目的位元組寫入檔案中。

nsfilehandle類提供的方法也可用於各種裝置或套接字。

nsurl類允許在應用中使用url方法。

nsbundle類提供允許在應用中使用包(bundle)的方法,包括搜尋包中的特定資源(如jpeg)。

管理檔案和目錄:nsfilemanager

對於nsfilemanager,檔案或目錄是使用檔案的路徑名的唯一表示。每個路徑名都是nsstring物件。

相對路徑:ch16/copy.m,儲存在ch16中的檔案copy1.m,ch16包含在當前目錄中

絕對路徑:/users/stevekochan,一斜線(/)開始。

特殊的帶字元(~)作為使用者主目錄的縮寫。~linda可能是/user/linda。

我們可以通過使用方法和函式來獲取當前目錄的路徑名、使用者的主目錄及可以用來建立零時檔案的目錄。

常見nsfilemanager檔案方法:p381,這些方法都是物件方法。建立nsfilemanager物件:

nsfilemanager *fm;

...fm = [nsfilemanager defaultmanager];

//刪除名為todolist的檔案,先建立nsfilemanager物件,再呼叫removeitematpath方法。

if([fm removeitematpath: @"todolist error: null"] == no)

對於現有的檔案,屬性字典包括各種資訊,如檔案的所有者、檔案大小、檔案的建立日期等等。字典的每個屬性可以通過鍵值提取,而所有的鍵都定義在標頭檔案中。例如,表示檔案大小的鍵值為nsfilesize。

**使用:p382-384

使用nsdata類

使用檔案時,需要頻繁的將資料讀入到乙個臨時儲存區(緩衝區)。nsdata類,用來設定緩衝區、將檔案的內容讀入緩衝區,或將緩衝區的內容寫到乙個檔案。定義不可變緩衝區(nsdata類),可變緩衝區(nsmutabledata類)。

nsdata *filedata;

filedata = [fm contentsatpath: @"newfile2"];

if (filedata == nil )

if ([fm creatfileatpath: @"newfile3" contens: filedata attributes: nil] == no)

使用目錄

nsfilemanager常見的目錄方法:p387

**清單:p387-388

列舉目錄中的內容

enumeratoratpath: 方法,一次可以列舉指定目錄中的每個檔案,預設情況下,其中乙個檔案為目錄,那麼也會遞迴列舉它的內容。在過程中,通過向列舉物件傳送一條skipdescendants訊息,可以動態的阻止遞迴過程,從而不在列舉目錄中的內容。

contentsofdirectoryatpath:error:方法可以列舉指定目錄的內容,並在乙個陣列中返回檔案列表。如果這個目錄中任何檔案本身是乙個目錄,這個方法並不遞迴列舉它的內容。

nsstring *path;

nsfilemanager *fm;

nsdirectoryenumerator *direnum;

nsarray *dirarray;

fm = [nsfilemanager defaultmanager];

path = [fm currentdirectorypath];

direnum = [fm enumeratoratpath: path];

while ((path = [direnum nextobject]) != nil)

}dirarray = [fm contentsofdirectoryaatpath: [fm currentdirectiorypath] error: null];

for (path in dirarray)

OC自學筆記

變數資料修飾 auto register extern static 預設auto int i 0 等於 auto int i 0 register高效變數 register int i 0 分配數量有限,跟系統有關,可能會降為auto extern全域性變數 extern int i 0 相同專案...

oc自學 複製物件

copy和mutablecopy方法 可以使用這些方法建立物件的副本。dataarray2 dataarray mutablecopy 在記憶體中建立乙個新的dataarray副本,並複製了它所有元素。dataarray removeobjectatindex 0 刪除了dataarray2的第乙個...

oc自學 預處理程式

define語句 define true 1定義了名稱true,並使它等於值1。之後,名稱true可以用於程式中任何需要常量1的地方。預定義名稱不是變數,因此,不能為他賦值,除非替代指定值的結果實際上是乙個變數。更高階的定義型別 define two pi 2.9 pi define pi 3.14...