1.NSFileManager介紹
什么是NSFileManager
顧名思義, NSFileManager是用來(lái)管理文件系統(tǒng)的
它可以用來(lái)進(jìn)行常見(jiàn)的文件\文件夾操作
NSFileManager使用了單例模式使用defaultManager方法可以獲得那個(gè)單例對(duì)象
[NSFileManager defaultManager]
2.NSFileManager用法
- path這個(gè)文件\文件夾是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
NSFileManager *manager = [NSFileManager defaultManager];
// 可以判斷文件
BOOL flag = [manager fileExistsAtPath:@"/Users/sss/Desktop/sss.txt"];
NSLog(@"flag = %i", flag);
// 可以判斷文件夾
flag = [manager fileExistsAtPath:@"/Users/sss/Desktop/sss"];
NSLog(@"flag = %i", flag);
- path這個(gè)文件\文件夾是否存在, isDirectory代表是否為文件夾
- (BOOL)fileExistsAtPath:(NSString )path isDirectory:(BOOL )isDirectory;
NSFileManager *manager = [NSFileManager defaultManager];
BOOL directory = NO;
BOOL flag = [manager fileExistsAtPath:@"/Users/LNJ/Desktop/未命名文件夾" isDirectory:&directory];
NSLog(@"flag = %i, directory = %i", flag, directory);
- path這個(gè)文件\文件夾是否可讀
- (BOOL)isReadableFileAtPath:(NSString *)path;
- path這個(gè)文件\文件夾是否可寫(xiě)
系統(tǒng)目錄不允許寫(xiě)入
- (BOOL)isWritableFileAtPath:(NSString *)path;
- path這個(gè)文件\文件夾是否可刪除
系統(tǒng)目錄不允許刪除
- (BOOL)isDeletableFileAtPath:(NSString *)path;
3.NSFileManager的文件訪問(wèn)
- 獲得path這個(gè)文件\文件夾的屬性
- (NSDictionary )attributesOfItemAtPath:(NSString )path error:(NSError **)error;
NSDictionary *info = [manager attributesOfItemAtPath:@"/Users/sll/Downloads/Day18/NSFileManager基礎(chǔ)/main.m" error:nil];
NSLog(@"info = %@", info);
- 獲得path的當(dāng)前子路徑
- (NSArray )contentsOfDirectoryAtPath:(NSString )path error:(NSError **)error;
獲取文件夾中所有的文件
// 注意:contentsOfDirectoryAtPath方法有一個(gè)弊端, 只能獲取當(dāng)前文件夾下所有的文件, 不能獲取子文件夾下面的文件
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *paths = [manager contentsOfDirectoryAtPath:@"/Users/LNJ/Desktop/" error:nil];
NSLog(@"paths = %@", paths);
- 獲得文件內(nèi)容
- (NSData )contentsAtPath:(NSString )path;
- 獲得path的所有子路徑
- (NSArray )subpathsAtPath:(NSString )path;
- (NSArray )subpathsOfDirectoryAtPath:(NSString )path error:(NSError **)error;
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *paths = [manager subpathsAtPath:@"/Users/LNJ/Desktop/"];
NSLog(@"paths = %@", paths);
4.NSFileManager的文件操作
- 拷貝
- (BOOL)copyItemAtPath:(NSString )srcPath toPath:(NSString )dstPath error:(NSError **)error;
- 移動(dòng)(剪切)
- (BOOL)moveItemAtPath:(NSString )srcPath toPath:(NSString )dstPath error:(NSError **)error;
- 刪除
- (BOOL)removeItemAtPath:(NSString )path error:(NSError *)error;
- 創(chuàng)建文件夾(createIntermediates為YES代表自動(dòng)創(chuàng)建中間的文件夾)
- (BOOL)createDirectoryAtPath:(NSString )path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary )attributes error:(NSError **)error;
NSFileManager *manager = [NSFileManager defaultManager];
BOOL flag = [manager createDirectoryAtPath:@"/Users/LNJ/Desktop/test" withIntermediateDirectories:YES attributes:nil error:nil];
NSLog(@"flag = %i", flag);
- 創(chuàng)建文件(NSData是用來(lái)存儲(chǔ)二進(jìn)制字節(jié)數(shù)據(jù)的)
- (BOOL)createFileAtPath:(NSString )path contents:(NSData )data attributes:(NSDictionary *)attr;
NSString *str = @"lnj";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSFileManager *manager = [NSFileManager defaultManager];
BOOL flag = [manager createFileAtPath:@"/Users/LNJ/Desktop/abc.txt" contents:data attributes:nil];
NSLog(@"flag = %i", flag);