iOS開發-檔案操作,ios開發操作

來源:互聯網
上載者:User

iOS開發-檔案操作,ios開發操作

                 目錄操作和檔案管理

 

學習目標

1.理解單例

2.掌握NSFileManager類常用的檔案管理操

3.掌握NSFileHandle類常用的檔案資料操作

4.瞭解NSData類的常用操作

5.掌握Plist檔案讀寫

——————————————————————

通常程式在運行中或者程式結束之後,需要儲存一些資訊,而且需要持久化儲存資訊,比如登陸資訊、視頻播放記錄、收藏記錄等等,那麼我們可以採用以下幾種方式對資料進行持久化儲存.

 

1.1單例模式(當前對象有且僅有一個執行個體)

                 

好處:只有一個執行個體,資料共用。

                  

單例模式是一種常用的設計模式。在應用這個模式時,

單例對象的類必須保證只有一個執行個體存在,而且自行執行個體化並向整個

系統提供這個執行個體。如果希望在系統中某個類的對象只能存在一個,

單例模式是最好的解決方案。

 

其實單例類似C語言中的全域變數

在整個程式聲明周期內,該對象只有一份存在記憶體中

可以在多個對象之間共用資料。

 

 

 

<1>單例建立

(1)  單例的建立方法通常以default/shared/standard 等等開頭

 

 

(2) 單例不需要release 或者 autorelease ,因為單例的生命週期為整個程式。

 

 

2.方法:

2.1 NSFileManager

<1>建立檔案管理工具單例對象 [NSFileManager defaultManager] <2>遍曆目錄下的內容//淺度遍曆目前的目錄下的檔案/*         contentsOfDirectoryAtPath:要遍曆的路徑         error:錯誤資訊         */NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error]; //深度遍曆 array = [fileManger subpathsOfDirectoryAtPath:path error:nil]; <3>判斷檔案是否存在/*         判斷檔案是否存在的時候一定要加尾碼。                      path中如果有尾碼表示檔案,不加尾碼表示檔案夾。         */        BOOL isExist = [fileManger fileExistsAtPath:path];                if (isExist)        {            NSLog(@"存在");        }        else        {            NSLog(@"不存在");        } <4>建立檔案和目錄//建立檔案  /*         createFileAtPath:要建立檔案的路徑         contents:檔案內容(NSData類型)         attributes:檔案屬性,一般為nil,nil表示採用預設屬性。         */        //注意:如果檔案已經存在會覆蓋        BOOL createOK = [fileManger createFileAtPath:path contents:nil attributes:nil];  //建立目錄/*         createDirectoryAtPath:要建立的目錄,如果檔案夾已經存在不會覆蓋         withIntermediateDirectories:是否有中間目錄         attributes:檔案夾的屬性,nil表示預設屬性         error:錯誤資訊         */        createOK = [fileManger createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];  <5>拷貝檔案/目錄                  //目錄與目錄拷貝        [fileManger copyItemAtPath:fromFilePath toPath:toDirPath error:&error];         //檔案與檔案拷貝        [fileManger copyItemAtPath:fromFilePath toPath:toFilePath error:&error]; <6>移動檔案/目錄        [fileManger moveItemAtPath:frompath toPath:toPath error:nil]; <7>刪除檔案/目錄                    [fileManger removeItemAtPath:toPath error:nil]; <8>擷取檔案屬性       NSDictionary *attributes = [fileManger attributesOfItemAtPath:path error:nil];       NSLog(@"檔案的屬性:%@",attributes); 

 

 

 

2.2 NSData(位元據)

<1>把NSString轉換為NSData

NSData *data = [string dataUsingEncoding:

NSUTF8StringEncoding]

 

       

<2>把NSData轉換為NSString

NSString *convertString = [[NSString alloc] 

initWithData:data encoding:NSUTF8StringEncoding]

 

 

2.3 NSFileHandle(檔案控制代碼類)

對檔案進行讀寫首先需要NSFileHandle開啟檔案,

NSFileHandle對檔案進行讀寫都是NSData類型的位元據.

 

<1>開啟檔案方法//唯讀控制代碼        NSFileHandle *readOnlyHandle = [NSFileHandle fileHandleForReadingAtPath:path];        //唯寫的控制代碼        NSFileHandle *writeOnlyHandle  = [NSFileHandle fileHandleForWritingAtPath:path];        //讀寫控制代碼        NSFileHandle *readAndWriteHandle = [NSFileHandle fileHandleForUpdatingAtPath:path];            <2>讀指定長度的資料(單位為位元組)  //讀取5個位元組資料NSData *data = [readOnlyHandle readDataOfLength:5];                    <3>從當前位移量讀到檔案尾[readOnlyHandle readDataToEndOfFile][readAndWriteHandle readDataToEndOfFile]  <4>設定檔案位移量(單位為位元組)[readOnlyHandle seekToFileOffset:位移的位元組數];  <5>將檔案位移量定位到檔案尾[readOnlyHandle seekToEndOfFile];                        <6>寫檔案(不覆蓋的時候需要設定位移量)          //1.先把位移量指到檔案尾部[readAndWriteHandle seekToEndOfFile];          //2.寫入到指定路徑[readAndWriteHandle writeData:[@"abcdef" dataUsingEncoding:NSUTF8StringEncoding]];           <7>關閉檔案控制代碼         //關閉檔案控制代碼,關閉後(不需要)就不能再操作檔案了[readAndWriteHandle closeFile];[readOnlyHandle closeFile];[writeOnlyHandle closeFile];

 

 

 

 

 

 

 

 

 

 

3  Plist

<1> 什麼是plist檔案, plist檔案的作用

    1.plist檔案:property list  屬性列表檔案,檔案的內容只能是 NSString,NSNumber,NSDate,NSData,NSArray,NSDictionary類的對象內容,不能儲存其他類型資料

 

2.作用:對一些登陸註冊資訊或者程式的配置資訊(小資料)進行持久化儲存

 

<2> 如何建立plist檔案, 如何編輯plist檔案

Plist檔案內容的格式是XML文法格式

 

1.Xcode建立

1.點擊右鍵—>New File 彈出一對話方塊

2.iOS程式選中iOS欄中的Resource或者Mac程式選中OS X 欄中的resource 

3.點擊Resource中的Property List 建立plist檔案

4.點擊檔案中的'+'可以添加資料

 

2.代碼建立

如果要把 NSString NSNumber NSDate NSData NSArray NSDictionary 的對象寫入檔案一般就用plist檔案  

我們需要這些資料儲存到一個數組或者字典中,然後調用數組和字典的相關函數把數 組NSArray或者字典NSDictionary寫入plist檔案

//NSArray和NSDictionary寫檔案方法

- (BOOL)writeToFile:(NSString *)path atomically:

(BOOL)useAuxiliaryFile;

 

<3> 如何在程式中讀取plist檔案資料

Plist檔案的根節點(資料的最外層)通常是數組或者字典

如果Plist檔案的根節點是字典那麼使用字典的類方法

+ (id)dictionaryWithContentsOfFile:(NSString *)path;

讀寫Plist檔案

如果根節點是數組那麼使用數組的類方法

+ (id)arrayWithContentsOfFile:(NSString *)path;

讀取Plist檔案。

注:上述兩個方法只能讀取Plist檔案,不能讀取其他格式的檔案。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.