2011年5月2日 星期一

Foundation Framework - 檔案存取

Foundation Framework 提供存取檔案系統執行檔案與目錄進行基本運作


NSFileManager 可以有以下功能: ( 其提供的方法也適用於目錄 )

- 建立新檔

- 讀取以存在的檔案

- 將資料寫入檔案

- 更改檔名

- 刪除檔案

- 測試檔案是否存在

- 決定檔案的大小與屬性

- 進行檔案複製

- 測試兩檔案內容是否相同


NSFileHandle ( 其提供的方法也適用於設備裝置或sockets )


- 開啟檔案 進行讀取 寫入 更新

- 找到檔案中指定位置

- 以特定的bytes 數寫入或讀取檔案

路徑名稱(pathname)- 是個NSString 的物件,可以是 relative(相對的) ,或是 Full(完整的) 路徑名


relative 相對路徑 => 指的是相對於目前的目錄 所以Copy.m 代表目前的目錄下的 "Copy.m"這個檔案

(/) 將路徑的目錄分開 => 這樣可以就可以藉由"Copy.m"分辨路徑 ( "ch16/Copy.m") 利用(/)可以知道 Copy.m 位於ch16這個目錄下


Full 完整路徑 又名 absolute絕對路徑,起始於/ , "/" 就是root directory 根目錄 ,

ex. /User/Jason =>指定三個目錄 就是Jason的家目錄

=>"/"

=>"User"

=>"Jason"


特殊字元(~) 為使用者家目錄的縮寫 => ~Jason = /Users/Jason


常用的NSFileManager檔案方法


以下參數定義:

path, path1, path2, from, to: Object of NSString

attr: Object of NSDictionary

handler : 自定的callback handler! 當我們把nil 指定給handler預設動作是enable! 方法會回傳BOOL = "YES" or "NO"


- (NSData *) contentsAtPath: path // 從檔案讀取資料


- (NSData *)createFileAtPath: path

contents:(NSData *) data

attributes: attr // 將資料寫入檔案


- (BOOL) removeFileAtPath: path

handler: handler // 移除檔案


- (BOOL) movePath: from

toPath: to //(to)不可為已存在的檔案

handler: handler // 更改檔案名稱或移動檔案


- (BOOL) copyPath: from

toPath: to //(to)不可為已存在的檔案

handler: handler // 複製檔案

- (BOOL) contentsEqualAtPath: path1

andPath: path2 //比對兩檔案的內容


- (BOOL) fileExistsAtPath: path //測試檔案是否存在


- (BOOL) isReadableFileAtPath: path //測試檔案是否存在 是否可以可讀取

- (BOOL) isWritableFileAtPath: path //測試檔案是否存在 是否可以可寫入


- (NSDictionary *) fileAttributesAtPath: path

traverseLink: (BOOL) flag // 取得檔案的屬性


- (BOOL) changeFileAttributes: attr

atPath: path // 改變檔案的屬性

沒有留言: