日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS NSFileManager文件管理(沙盒)

發(fā)布時間:2024/3/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS NSFileManager文件管理(沙盒) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OS因為沙盒機制,所以只能訪問通訊錄、相冊和App內(nèi)的文件,下面就來說說如何進行文件管理。

App所產(chǎn)生的數(shù)據(jù)都存在于自己的沙盒中,一般沙盒都有3個文件:Documents、Library和tmp。
Documents: 這個目錄存放用戶數(shù)據(jù)。存放用戶可以管理的文件;iTunes備份和恢復(fù)的時候會包括此目錄。
Library: 主要使用它的子文件夾,我們熟悉的NSUserDefaults就存在于它的子目錄中。
Library/Caches: 存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應(yīng)用退出刪除,“刪除緩存”一般指的就是清除此目錄下的文件。
Library/Preferences: NSUserDefaults的數(shù)據(jù)存放于此目錄下。
tmp: App應(yīng)當負責(zé)在不需要使用的時候清理這些文件,系統(tǒng)在App不運行的時候也可能清理這個目錄。

獲取App沙盒根路徑:

NSString *dirHome = NSHomeDirectory();

獲取Documents目錄路徑:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];

獲取Library目錄路徑

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); NSString *libraryDirectory = [paths objectAtIndex:0];

獲取Library/Caches目錄路徑

NSArray *cacPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *cachePath = [cacPath objectAtIndex:0];

獲取Tmp目錄路徑

NSString *tmpDirectory = NSTemporaryDirectory();

創(chuàng)建文件夾/目錄(返回創(chuàng)建結(jié)果)

- (BOOL)createDir:(NSString *)fileName {NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentsDirectory = [paths objectAtIndex:0];NSString *path = [NSString stringWithFormat:@"%@/%@",documentsDirectory,fileName];NSFileManager *fileManager = [NSFileManager defaultManager];BOOL isDir;// 先判斷目錄是否存在,不存在才創(chuàng)建if (![fileManager fileExistsAtPath:path isDirectory:&isDir]) {BOOL res = [fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];return res;} else {return NO;} }

創(chuàng)建文件(返回創(chuàng)建結(jié)果)

- (BOOL)createFile:(NSString *)path {NSFileManager *fileManager = [NSFileManager defaultManager];// 在傳入的路徑下創(chuàng)建test.c文件NSString *testPath = [path stringByAppendingPathComponent:@"test.c"];// 通過data創(chuàng)建數(shù)據(jù)BOOL res = [fileManager createFileAtPath:testPath contents:nil attributes:nil]; [fileManager createFileAtPath:testPath contents:data attributes:nil];return res; }

寫數(shù)據(jù)到文件(返回寫入結(jié)果)

- (BOOL)writeFile:(NSString *)path {NSString *testPath = [path stringByAppendingPathComponent:@"test.c"];NSString *content = @"將數(shù)據(jù)寫入到文件!";BOOL res = [content writeToFile:testPath atomically:YES encoding:NSUTF8StringEncoding error:nil];return res; }

讀文件數(shù)據(jù)

- (void)readFile:(NSString *)path {// 方法1:NSData *data = [NSData dataWithContentsOfFile:path]; NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);//方法2:NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];NSLog(@"文件讀取成功: %@", content); }

文件屬性

- (void)fileAttriutes:(NSString *)path{ NSFileManager *fileManager = [NSFileManager defaultManager];NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path error:nil];NSArray *keys;id key, value;keys = [fileAttributes allKeys];int count = [keys count];for (int i = 0; i < count; i++) {key = [keys objectAtIndex:i]; // 獲取文件名value = [fileAttributes objectForKey:key]; // 獲取文件屬性} }

根據(jù)路徑刪除文件(返回刪除結(jié)果)

- (BOOL)deleteFileByPath:(NSString *)path {NSFileManager *fileManager = [NSFileManager defaultManager];BOOL res = [fileManager removeItemAtPath:path error:nil];return res;NSLog(@"文件是否存在: %@", [fileManager isExecutableFileAtPath:path]?@"YES":@"NO"); }

根據(jù)文件名刪除文件

- (BOOL)deleteFileByName:(NSString *)name {NSFileManager *fileManager = [NSFileManager defaultManager];// getLocalFilePath方法在下面[fileManager removeItemAtPath:[self getLocalFilePath:fileName] error:nil]; }

根據(jù)路徑復(fù)制文件

+ (BOOL)copyFile:(NSString *)path topath:(NSString *)topath {BOOL result = NO;NSError *error = nil;result = [[NSFileManager defaultManager] copyItemAtPath:path toPath:topath error:&error];if (error) {NSLog(@"copy失敗:%@", [error localizedDescription]);}return result; }

根據(jù)路徑剪切文件

+ (BOOL)cutFile:(NSString *)path topath:(NSString *)topath { BOOL result = NO;NSError *error = nil;result = [[NSFileManager defaultManager] moveItemAtPath:path toPath:topath error:&error];if (error) {NSLog(@"cut失敗:%@", [error localizedDescription]);}return result; }

根據(jù)文件名獲取資源文件路徑

+ (NSString *)getResourcesFile:(NSString *)fileName {return [[NSBundle mainBundle] pathForResource:fileName ofType:nil]; }

根據(jù)文件名獲取文件路徑

+ (NSString *)getLocalFilePath:(NSString *)fileName {NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"/Documents"]return [NSString stringWithFormat:@"%@/%@", path, fileName]; }

根據(jù)文件路徑獲取文件名稱

+ (NSString *)getFileNameByPath:(NSString *)filepath {NSArray *array = [filepath componentsSeparatedByString:@"/"];if (array.count == 0) return filepath;return [array objectAtIndex:array.count-1]; }

根據(jù)路徑獲取該路徑下所有目錄

+ (NSArray *)getAllFileByName:(NSString *)path {NSFileManager *defaultManager = [NSFileManager defaultManager];NSArray *array = [defaultManager contentsOfDirectoryAtPath:path error:nil];return array; }

根據(jù)路徑獲取文件目錄下所有文件

+ (NSArray *)getAllFloderByName:(NSString *)path {NSFileManager *fileManager = [NSFileManager defaultManager];NSArray *fileAndFloderArr = [self getAllFileByName:path];NSMutableArray *dirArray = [[NSMutableArray alloc] init];BOOL isDir = NO;// 在上面那段程序中獲得的fileList中列出文件夾名for (NSString *file in fileAndFloderArr) {NSString *paths = [path stringByAppendingPathComponent:file];[fileManager fileExistsAtPath:paths isDirectory:(&isDir)];if (isDir) {[dirArray addObject:file];}isDir = NO;}return dirArray; }

獲取文件及目錄的大小

+ (float)sizeOfDirectory:(NSString *)dir {NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:dir];NSString *pname;int64_t s = 0;while (pname = [direnum nextObject]) {//NSLog(@"pname %@",pname);NSDictionary *currentdict = [direnum fileAttributes];NSString *filesize = [NSString stringWithFormat:@"%@", [currentdict objectForKey:NSFileSize]];NSString *filetype = [currentdict objectForKey:NSFileType];if ([filetype isEqualToString:NSFileTypeDirectory]) continue;s = s + [filesize longLongValue];}return s*1.0; }

重命名文件或目錄

+ (BOOL)renameFileName:(NSString *)oldName toNewName:(NSString *)newName {BOOL result = NO;NSError *error = nil;result = [[NSFileManager defaultManager] moveItemAtPath:[kDSRoot stringByAppendingPathComponent:oldName] toPath:[kDSRoot stringByAppendingPathComponent:newName] error:&error];if (error){NSLog(@"重命名失敗:%@", [error localizedDescription]);} return result; }

讀取文件

+ (NSData *)readFileContent:(NSString *)filePath {return [[NSFileManager defaultManager] contentsAtPath:filePath]; }

保存文件

+ (BOOL)saveToDirectory:(NSString *)path data:(NSData *)data name:(NSString *)newName {NSString *resultPath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@", newName]];return [[NSFileManager defaultManager] createFileAtPath:resultPath contents:data attributes:nil]; }

總結(jié)

以上是生活随笔為你收集整理的iOS NSFileManager文件管理(沙盒)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。