援引:https://www.jianshu.com/p/1ee2619137f9ios
文章以前,咱們先來看下本文的知識大綱:git
1.NSFileManager和NSFilehandle的概念 1.NSFileManager 是 Foundation 框架中用來管理和操做文件、目錄等文件系統相關聯內容的類。 2.NSFileHandle類:它須要配合NSFileManager文件管理類,對文件內容進行操做,寫入數據、讀取數據。 2.NSFileManager和NSFileHandle的配合使用,實現文件的增刪改查等功能 2.1 拿到沙盒的Document路徑(一般默認放在這個路徑下) // 拿到沙盒路徑 -(NSString*)getDocumentPath { // @expandTilde 是否覆蓋 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; return documentsDirectory; } 2.2 建立文件夾,而且判斷是否建立成功 NSString *documentsPath =[self getDocumentPath]; NSFileManager *fileManager = [NSFileManager defaultManager];// NSFileManager 是 Foundation 框架中用來管理和操做文件、目錄等文件系統相關聯內容的類。 NSString * testDirectory = [documentsPath stringByAppendingPathComponent:@"日記"]; BOOL res = [fileManager createDirectoryAtPath:testDirectory withIntermediateDirectories:YES attributes:nil error:nil]; if (res) { NSLog(@"文件夾建立成功"); }else { NSLog(@"文件夾建立失敗"); } 2.3 建立文件,並判斷文件是否建立 NSString *testPath = [testDirectory stringByAppendingPathComponent:@"test.txt"]; BOOL res1 = [fileManager createFileAtPath:testPath contents:nil attributes:nil]; if (res1) { NSLog(@"文件建立成功: %@" ,testPath); }else { NSLog(@"文件建立失敗"); } 2.4 寫入文件,並判斷文件是否存在 NSString * str = @"你是一位好同志"; BOOL res2 = [str writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; if (res2) { NSLog(@"文件寫入成功"); }else { NSLog(@"文件寫入失敗"); } // 判斷文件是否存在 if ([fileManager fileExistsAtPath:testPath]) { NSLog(@" 是否存在 "); } 2.5 追加寫入內容 // 追加內容 NSFileHandle * handFile = [NSFileHandle fileHandleForUpdatingAtPath:testPath]; //NSFileHandle類:它須要配合NSFileManager文件管理類,對文件內容進行操做,寫入數據、讀取數據。 [handFile seekToEndOfFile];// 文件光標移動末尾 NSString * str1 = @"追加內容";// 追加內容 NSData * data = [str1 dataUsingEncoding:NSUTF8StringEncoding];// 轉換文件格式 [handFile writeData:data];// 寫入文件 [handFile closeFile];// 關閉 2.6 刪除文件,並判斷文件是否刪除 // 刪除文件 BOOL isOK = [fileManager removeItemAtPath:testPath error:nil]; if (isOK) { NSLog(@"-- 成功刪除---"); } 2.7 拷貝文件 // 拷貝文件 NSString *targetPath = [testDirectory stringByAppendingPathComponent:@"test1.txt"]; //目標文件路徑 [fileManager copyItemAtPath:testPath toPath:targetPath error:nil]; // 拷貝文件 2.8 移動文件 [fileManager moveItemAtPath:testPath toPath:targetPath error:nil]; 2.9 讀取文件 NSString * content = [NSString stringWithContentsOfFile:testPath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"拿到文章的內容 -- %@",content); 2.10 計算文件大小 // 計算文件大小 - (unsigned long long)fileSizeAtPath:(NSString *)filePath { NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isExist = [fileManager fileExistsAtPath:filePath]; if (isExist) { unsigned long long fileSize = [[fileManager attributesOfItemAtPath:filePath error:nil] fileSize]; return fileSize; } else { NSLog(@"file is not exist"); return 0; } } 2.11 計算文件夾大小 // 計算整個文件夾中全部文件大小 - (unsigned long long)folderSizeAtPath:(NSString*)folderPath { NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL isExist = [fileManager fileExistsAtPath:folderPath]; if (isExist) { NSEnumerator *childFileEnumerator = [[fileManager subpathsAtPath:folderPath] objectEnumerator]; unsigned long long folderSize = 0; NSString *fileName = @""; while ((fileName = [childFileEnumerator nextObject]) != nil){ NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName]; folderSize += [self fileSizeAtPath:fileAbsolutePath]; } return folderSize / (1024.0 * 1024.0); } else { NSLog(@"file is not exist"); return 0; } } 3.NSString、UIImage 和 NSData的相互轉換 3.1 NSString 和 NSData轉換 NSString * string = @"123456"; NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding]; //NSString 轉換爲NSData NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];////NSData 轉換爲NSString 3.2 UIImage 和 NSData轉換 //NSData轉換爲UIImage NSString * imagePath = @"/Users/yyf/Desktop/ios中文件管理器的使用.png"; NSData *imageData = [NSData dataWithContentsOfFile: imagePath]; UIImage *image = [UIImage imageWithData: imageData]; //UIImage轉換爲NSData NSData *imageData1 = UIImagePNGRepresentation(image); 3.路徑各個分段的查詢 NSString * path = @"/Doc/work/diary"; NSArray * array = [path pathComponents];//文件的各個部分 NSString * lastName = [path lastPathComponent];//文件的最後一個部分 NSString * deleteName = [path stringByDeletingLastPathComponent];// 文件刪除最後一個部分 NSString * appendName = [path stringByAppendingPathComponent:@"cy.jpg"];// 文件追加一個部分 NSLog(@"得到全部文件%@\n 得到最後文件%@\n 刪除以後的名稱%@\n追加名稱%@\n",array,lastName,deleteName,appendName);
附上代碼地址:github
Demo地址
[end]
關於ios中文件管理器的使用介紹到這裏。app