- 不要等到明天鸠踪,明天太遙遠(yuǎn)琴儿,今天就行動(dòng)鞭呕。
須讀:看完該文章你能做什么带到?
NSFileManager的基本使用
學(xué)習(xí)前:你必須會(huì)什么?(在這里我已經(jīng)默認(rèn)你具備C語言的基礎(chǔ)了)
適合所有人伪冰,不需要懂的什么
注:(小白直接上手)
一、本章筆記
一音榜、文件
NSFileManager
1.初始化
@property (class, readonly, strong) NSFileManager *defaultManager;
2.判斷一個(gè)文件 或者 文件夾 是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
3.判斷一個(gè)文件是不是存在,并且判斷他是不是一個(gè)文件夾
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(nullable BOOL *)isDirectory;
4.獲取文件或 文件夾的屬性
- (nullable NSDictionary<NSFileAttributeKey, id> *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
5.獲取文件夾所有的文件 (只能獲取子文件 其他的子類文件夾獲取不了)
- (nullable NSArray<NSString *> *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
6.獲取文件夾所有的文件 (包含其他的子文件)
- (nullable NSArray<NSString *> *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
8.創(chuàng)建文件夾
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary<NSString *, id> *)attributes error:(NSError **)error NS_AVAILABLE(10_5, 2_0);
9.創(chuàng)建文件
- (BOOL)createFileAtPath:(NSString *)path contents:(nullable NSData *)data attributes:(nullable NSDictionary<NSString *, id> *)attr;
二稚叹、code
main.m
#pragma mark 15-NSFileManager
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
#pragma 1.初始化
// NSFileManager *fm1 = [NSFileManager defaultManager];
// NSFileManager *fm2 = [NSFileManager defaultManager];
// NSLog(@"%p,%p",fm1,fm2);
#pragma 2.判斷一個(gè)文件 或者 文件夾 是否存在 (fileExistsAtPath)
NSFileManager *manager = [NSFileManager defaultManager];
BOOL flag = [manager fileExistsAtPath:@"/Users/liyuhong165/Desktop/temp/day08"];
NSLog(@"flag = %i",flag);
#pragma 3.判斷一個(gè)文件是不是存在,并且判斷他是不是一個(gè)文件夾
// 注意 : 該方法的返回值 是說明 傳入的路徑對(duì)應(yīng)的文件 或 文件夾是否存在
// 第二個(gè)參數(shù) 適用于保存判斷結(jié)果的, 如果是一個(gè)目錄,那么就會(huì)賦值為YES,如果不是就賦值為NO
BOOL dir = NO;
flag = [manager fileExistsAtPath:@"/Users/liyuhong165/Desktop/temp/day08/abc.plist" isDirectory:&dir];
NSLog(@"flag = %i dir = %i",flag,dir);
#pragma 4.獲取文件或 文件夾的屬性
NSDictionary *dict = [manager attributesOfItemAtPath:@"/Users/liyuhong165/Desktop/temp/day08/abc.plist" error:nil];
NSLog(@"info = %@",dict);
#pragma 5.獲取文件夾所有的文件 (只能獲取子文件 其他的子類文件夾獲取不了)
NSArray<NSString *> *res = [manager contentsOfDirectoryAtPath:@"/Users/liyuhong165/Desktop/temp/day08" error:nil];
NSLog(@"res = %@",res);
#pragma 6.獲取文件夾所有的文件 (包含其他的子文件)
NSArray *arr = [manager subpathsOfDirectoryAtPath:@"/Users/liyuhong165/Desktop/temp/day08" error:nil];
NSLog(@"arr = %@",arr);
#pragma 7.刪除一個(gè)文件 拷貝
#pragma 8.創(chuàng)建文件夾
/*
createDirectoryAtPath : 告訴系統(tǒng) 文件需要?jiǎng)?chuàng)建到什么位置
withIntermediateDirectories : 如果指定的文件找那個(gè) 有一些文件夾不存在, 是否自動(dòng) 創(chuàng)建不存在的文件夾
attributes : 指定創(chuàng)建出來的文件夾的屬性
error : 是否創(chuàng)建成功, 如果失敗 會(huì)給傳入的參數(shù)賦值
*/
// 注意 : 該方法只能用于創(chuàng)建文件夾, 不能創(chuàng)建文件
flag = [manager createDirectoryAtPath:@"/Users/liyuhong165/Desktop/temp/day08/abcd/lyh" withIntermediateDirectories:YES attributes:nil error:nil];
NSLog(@"flag = %i",flag);
#pragma 9.創(chuàng)建文件
/*
createFileAtPath : 指定文件 創(chuàng)建出來的位置
contents : 文件的內(nèi)容
attributes : 創(chuàng)建出來的文件的屬性
NSData : 二級(jí)制數(shù)據(jù)
*/
// 該方法只能用于創(chuàng)建文件, 不能用于創(chuàng)建文件夾
NSString *str = @"lyh cool";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[manager createFileAtPath:@"/Users/liyuhong165/Desktop/temp/day08/lyh165.txt" contents:data attributes:nil];
#pragma 7.作業(yè)要求計(jì)算一個(gè)文件中所有文件的大小
// 注意: 如果是通過 attributesOfItemAtPath 方法直接獲取, 那么獲取到的文件夾大小不準(zhǔn)確
// 要想實(shí)現(xiàn) 計(jì)算一個(gè)文件夾中 所有文件的大小 必須 先拿到 所有的文件, 然后獲取所有文件的大小,然后在相加
return 0;
}