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];