OC學習 檔案操作

2021-07-03 08:04:13 字數 3984 閱讀 7245

oc中檔案的操作可以分為兩類:

(1)檔案本省的操作:建立、刪除、移動、拷貝等

(2)檔案內容的操作:讀、寫等

|| 讀:   磁碟——>記憶體

|| 寫:記憶體——>磁碟

要想學會oc中的檔案操作,我們就要學會兩個類:

nsfilemanager(檔案管理類)

nsfilehandle(檔案控制代碼類)

一、nsfilemanager

1、建立檔案管理器單利物件

nsfilemanager*fm = [nsfilemanager

defaultmanager];

2、遍歷目錄下內容

//淺度遍歷指定目錄

nserror

* __autoreleasingerror =nil;

nsarray

*ary = [fmcontentsofdirectoryatpath:

@"path"

error:&error];

//該方法若出錯會建立乙個nserror型別的物件,然後用傳遞過來的error指標指向該物件

if (error)

//深度遍歷指定目錄

nsarray

*ary2 = [fmsubpathsofdirectoryatpath:

path

error:

nil];

nsarray *ary2 = [fm subpathsatpath:path];

3、建立檔案或者目錄

//建立檔案,若建立的檔案已存在,則會覆蓋

bool

ret = [fm createfileatpath:

path

contents:

nilattributes:

nil];

//建立資料夾,若資料夾已經存在,則不會覆蓋

/*引數1:建立的目錄

引數2:是否建立中間目錄

引數3:要建立的目錄的屬性

引數4:出錯處理

*/ret = [fm createdirectoryatpath:

path2

withintermediatedirectories:

yesattributes:

nilerror:

nil];

if (ret == yes) else

4、拷貝檔案或者目錄

//拷貝檔案或目錄

bool

ret = [fm copyitematpath:

srctopath:

dsterror:

nil];

if (ret == yes) else

5、移動檔案或者目錄

bool

ret = [fm moveitematpath:

srctopath:

dsterror:

nil];

if (ret == yes) else

6.刪除檔案或者目錄

bool

ret = [fm removeitematpath:

path

error:

nil];

7、獲取檔案屬性

nsdictionary

*attr = [fmattributesofitematpath:

path2

error:

nil];

8、判斷檔案是否存在

ret = [fm fileexistsatpath:

path2];

9、判斷檔案是否存在,是否是目錄

bool isdir = no;

ret = [fm fileexistsatpath:

path2

isdirectory:&isdir];

二、nsfilehandle

1、開啟檔案方式(預設位置在檔案的開頭)

//已唯讀方式開啟檔案

nsfilehandle

*fh = [

nsfilehandle

filehandleforreadingatpath:

path];

//以只寫方式開啟檔案

nsfilehandle

*fh2 = [

nsfilehandle

filehandleforwritingatpath:

path];

//以讀寫方式開啟

nsfilehandle

*fh3 = [

nsfilehandle

filehandleforupdatingatpath:

path];

2、從當前偏移量讀到檔案尾

nsdata

*data = [fhreaddatatoendoffile];

3、讀取制定長度的資料(單位是位元組)

nsdata *data = [fh readdataoflength:5];

4、設定檔案的偏移量(單位位元組)

[fh seektofileoffset:

10];

5、設定檔案偏移量之檔案尾

[fh seektoendoffile];

6、將檔案的長度設定為offset大小(截斷檔案)

[fh3 truncatefileatoffset:

20];

7、將資料寫入到檔案

[fh2 writedata:data];

練習題、:

編寫乙個程式,將乙個目錄下的檔案分類管理

a、用每個檔案的字尾建立對應全大寫目錄,將同類檔案移動到對應的目錄。

如:1.txt檔案,建立txt目錄,將1.txt移動到該目錄

b、將沒有字尾的檔案移動到others目錄

c、將目錄移動到subdir目錄中

#import "jyfilemanager.h"

@implementationjyfilemanager

- (instancetype)initwithpath:(nsstring *)path

return self; }

- (void)movedirectory:(nsstring *)name

- (void)movefile:(nsstring *)name

else

}- (void)archivefileatpath

nsstring

*path = [

_path

//判斷是否是目錄

bool isdir = no;

[fmfileexistsatpath:path isdirectory:&isdir];

if (isdir == yes) else }}

+ (void)archivefileatpath:(nsstring *)path

else

}//若是乙個目錄則執行以下**

jyfilemanager*myfm = [[jyfilemanager

alloc

] initwithpath

:path];

[myfm archivefileatpath]; }

@end

*****=main====

#define path @"/users/qianfeng001/desktop/test"

int main(int argc,const

char * argv)

return0;}

*****===執行前*****====

*****===執行後*****====

OC學習 檔案讀寫

拿到tmp路徑 nsstring tmppath nstemporarydirectory nslog tmppath 獲取nsfilemanager單例類,用於檔案操作 nsfilemanager filemanager nsfilemanager defaultmanager 用nsfilema...

OC學習(檔案載入與儲存)

cocoa提供了兩個處理檔案的通用類 屬性列表和物件編碼 在cocoa中,有一類名為屬性物件 property list 的物件,通常簡寫為plist。這些屬性列表類是nsarray nsdictionary nsstring nsnumber nsdate和nsdata,以及他們的可修改形態。ns...

Python學習 檔案操作

python使用open來開啟資料流 data open data.txt 下面是乙個讀取乙個檔案,然後逐行輸出的 try data open data.txt for each line in data try role,line spoken each line.split 1 print ro...