iOS-NSFileManager and NSFileHandle

1.NSData和NSString之間的互相轉(zhuǎn)換

//NSData理解:

是一種二進(jìn)制的數(shù)據(jù)流,用來(lái)儲(chǔ)存數(shù)據(jù)的

//將NSString轉(zhuǎn)換為NSData

        NSString *string = @"1508 zhen hao";

        //- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding;

        //作用:將string轉(zhuǎn)換成data

        NSData *dataFromString = [string dataUsingEncoding:NSUTF8StringEncoding];

//將NSData轉(zhuǎn)化為NSString

        //- (instancetype)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;

        //作用:用data初始化string

        NSString *stringFromData = [[NSString alloc] initWithData:dataFromString encoding:NSUTF8StringEncoding];

2.文件和目錄管理

文件目錄管理:就是指文件和目錄的創(chuàng)建,目錄的遍歷,文件目錄的復(fù)制,剪切,刪除等

3.文件目錄的創(chuàng)建

//文件管理器的創(chuàng)建

    //fileManage對(duì)象一旦創(chuàng)建完成后,后續(xù)所有的文件操作都是通過(guò)fileManage進(jìn)行操作的

    NSFileManager *fileManage = [NSFileManager defaultManager];//創(chuàng)建一個(gè)單例類(lèi)的對(duì)象

//文件和目錄的創(chuàng)建

    //  /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

        

    //- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

    //作用:創(chuàng)建一個(gè)文件

    //path: 創(chuàng)建的文件的路徑

    //data: 文件創(chuàng)建時(shí)添加數(shù)據(jù)(nil:空文件)

    //attr: 文件屬性(nil:默認(rèn)屬性)

    [fileManager createFileAtPath:[pathDeskTop stringByAppendingString:@"/file.txt"] contents:nil attributes:nil];

    

    //- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates     attributes:(NSDictionary *)attributes error:(NSError **)error

    //作用: 創(chuàng)建目錄

    //path: 創(chuàng)建的目錄的路徑

    //createIntermediates: 是否連同自路徑一起創(chuàng)建

    //attributes: 文件夾的屬性(nil)

    //error: 當(dāng)方法調(diào)用失敗, 保存錯(cuò)誤原因(nil)

    NSError *error = nil;

    [fileManager createDirectoryAtPath:[pathDeskTop stringByAppendingString:@"/dir/dir1"] withIntermediateDirectories:YES attributes:nil error:&error];

    if (error) {

        NSLog(@"createDirectoryAtPath error: %@", [error localizedFailureReason]);

    }

4.目錄的遍歷

//目錄的遍歷

    //  /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

    //創(chuàng)建出NSFileManager對(duì)象后,所有對(duì)文件的操作都是通過(guò)NSFileManager對(duì)象

    NSFileManager *fileManager = [NSFileManager defaultManager];//單例對(duì)象

//淺層遍歷目錄(只遍歷一層)  

    //- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    NSArray *contentsDirArray = [fileManager contentsOfDirectoryAtPath:[pathDeskTop stringByAppendingString:@"/dir"] error:nil];





//深層遍歷目錄(遍歷到最后一層)

    //- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    NSArray *subDirArray = [fileManager subpathsOfDirectoryAtPath:[pathDeskTop stringByAppendingString:@"/dir"] error:nil];

5.文件的復(fù)制,刪除,剪切

//文件或目錄的復(fù)制

    //  /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

    //創(chuàng)建出NSFileManager對(duì)象后,所有對(duì)文件的操作都是通過(guò)NSFileManager對(duì)象

    NSFileManager *fileManager = [NSFileManager defaultManager];//單例對(duì)象  

    //- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:文件/目錄的復(fù)制

    //srcPath: 原文件路徑

    //dstPath: 目的路徑(復(fù)制后文件需要重新起名字)

    //error: 保存錯(cuò)誤原因

           //文件復(fù)制

    [fileManager copyItemAtPath:[pathDeskTop stringByAppendingString:@"/file.txt"] toPath:[pathDeskTop stringByAppendingString:@"/dir/fileCopy.txt"] error:nil];

    //目錄復(fù)制

    //將dir1里面的整個(gè)文件內(nèi)容全部cope,創(chuàng)建一個(gè)dir1Copy的路徑,放到里面,發(fā)現(xiàn)有過(guò)這個(gè)路徑,就報(bào)錯(cuò).

    //把一個(gè)目錄看出一個(gè)文件進(jìn)行處理了

    [fileManager copyItemAtPath:[pathDeskTop stringByAppendingString:@"/dir/dir1"] toPath:[pathDeskTop stringByAppendingString:@"/dir1Copy"] error:nil];





//文件或目錄的剪切

    //   /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

    //創(chuàng)建出NSFileManager對(duì)象后,所有對(duì)文件的操作都是通過(guò)NSFileManager對(duì)象

    NSFileManager *fileManager = [NSFileManager defaultManager];//單例對(duì)象

    

    //- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:文件的剪切

    [fileManager moveItemAtPath:[pathDeskTop stringByAppendingString:@"/file.txt"] toPath:[pathDeskTop stringByAppendingString:@"/dir/fileCut.txt"] error:nil];

    //目錄的剪切

    [fileManager moveItemAtPath:[pathDeskTop stringByAppendingString:@"/dir1Copy"] toPath:[pathDeskTop stringByAppendingString:@"/dir/dir1CopyCut"] error:nil];




//文件/目錄的刪除

    //  /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

    //創(chuàng)建出NSFileManager對(duì)象后,所有對(duì)文件的操作都是通過(guò)NSFileManager對(duì)象

    NSFileManager *fileManager = [NSFileManager defaultManager];//單例對(duì)象

    

    //- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:刪除文件/目錄

    [fileManager removeItemAtPath:[pathDeskTop stringByAppendingString:@"/dir/file.txt"] error:nil];





//獲取文件/目錄的屬性

    //  /Users/mac/Desktop + 文件名

    NSString *pathDeskTop = @"/Users/mac/Desktop";//桌面路徑

    //創(chuàng)建出NSFileManager對(duì)象后,所有對(duì)文件的操作都是通過(guò)NSFileManager對(duì)象

    NSFileManager *fileManager = [NSFileManager defaultManager];//單例對(duì)象



    //- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);

    //作用:獲取文件/目錄的屬性

    NSDictionary *attributesDir = [fileManager attributesOfItemAtPath:[pathDeskTop stringByAppendingString:@"/dir/fileCut.txt"] error:nil];

//判斷文件是否存在

    - (BOOL)fileExistsAtpath:(NSString *)path;

6文件操作NSFileHandle

NSFileHandle的創(chuàng)建

//NSFileHandle對(duì)象的創(chuàng)建

    //當(dāng)用NSFileHandle創(chuàng)建對(duì)象后,所有文件內(nèi)的操作,都是通過(guò)NSFileHandle對(duì)象來(lái)完成的

    NSString *pathDesktop = @"/Users/mac/Desktop";//桌面路徑

    NSFileHandle *fileHandleRead = [NSFileHandle fileHandleForReadingAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]];//以只讀的方式打開(kāi)文件

    NSFileHandle *fileHandleWrite = [NSFileHandle fileHandleForWritingAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]];//以只寫(xiě)的方式打開(kāi)文件

    NSFileHandle *fileHandleUpdate = [NSFileHandle fileHandleForUpdatingAtPath:[pathDesktop stringByAppendingString:@"/file.txt"]];//以讀寫(xiě)的方式打開(kāi)文件

NSFileHandle 文件內(nèi)容的讀取

//首先 要打開(kāi)文件創(chuàng)建?一個(gè)文件操作對(duì)象

+ fileHandleForReadingAtPath: (只讀方式打開(kāi)已經(jīng)存在的文件,文件定 位到起始位置)
+ fileHandleForWritingAtPath: (只寫(xiě)方式打開(kāi)已經(jīng)存在的文件,文件定 位到起始位置)

+ fileHandleForUpdatingAtPath:(讀寫(xiě)方式打開(kāi)已經(jīng)存在的文件,文件定 位到起始位置)

讀取文件

– readDataToEndOfFile (從文件當(dāng)前位置讀到結(jié)尾)
– readDataOfLength: (從文件當(dāng)前為止讀固定字節(jié)數(shù)的內(nèi)容)

寫(xiě)文件

– writeData:

文件定位:

– seekToEndOfFile (定位到文件尾部)
– seekToFileOffset: (定位文件到某處)

關(guān)閉文件

- (void)closeFile ((網(wǎng)絡(luò)socket中用)通過(guò) initWithFileDescriptor初始化的對(duì)象,需要顯示的調(diào)用此方法) 其他方法創(chuàng)建的對(duì)象會(huì)自動(dòng)打開(kāi)文件,該對(duì)象被銷(xiāo)毀時(shí)會(huì)自動(dòng)關(guān)閉該文件,不要顯 示調(diào)用該方法 

//1:設(shè)置便宜量到文件末尾

    [fileHandle seekToEndOfFile];

//2:寫(xiě)入數(shù)據(jù)

    NSString *string = @"liu de hua mei wo shuai";

    NSData *dataFromString = [string dataUsingEncoding:NSUTF8StringEncoding];

    [fileHandle writeData:dataFromString];

//3:設(shè)置偏移量到文件開(kāi)始

    [fileHandle seekToFileOffset:0];

//4:讀取文件內(nèi)容

    NSData *dataFromFile = [fileHandle readDataToEndOfFile];

    NSString *stringFromData = [[NSString alloc] initWithData:dataFromFile encoding:NSUTF8StringEncoding];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,624評(píng)論 30 472
  • 一、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件,這個(gè)獨(dú)立、封閉、安全的空間,叫做沙盒。它一...
    1d5cb7cff98d閱讀 1,873評(píng)論 0 0
  • iOS開(kāi)發(fā)-文件管理(一) 一、iOS中的沙盒機(jī)制 iOS應(yīng)用程序只能對(duì)自己創(chuàng)建的文件系統(tǒng)讀取文件,這個(gè)獨(dú)立、封閉...
    MacShare閱讀 1,862評(píng)論 0 6
  • 站在前輩的肩膀上前行 UIKit框架和Foundation框架 所有的Mac OS X和IOS程序都是由大量的對(duì)象...
    zysmoon閱讀 8,957評(píng)論 0 16
  • 下面是我最近兩年學(xué)習(xí)OC中的一些基礎(chǔ)知識(shí),對(duì)于學(xué)習(xí)OC基礎(chǔ)知識(shí)的人可能有些幫助,拿出來(lái)分享一下,還是那句話(huà)不喜勿噴...
    小小趙紙農(nóng)閱讀 2,823評(píng)論 1 7

友情鏈接更多精彩內(nèi)容