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文件,不能讀取其他格式的文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM