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...