pragma mark 文件管理 NSFileManager
pragma mark 概念
/**
單例 : 永遠(yuǎn)創(chuàng)建出來(lái) 就是一個(gè)對(duì)象
被全局共享 / 無(wú)論獲取多少次 或者 是創(chuàng)建多少次
操作的都是同一個(gè)對(duì)象 都是存儲(chǔ)同一塊的存儲(chǔ)空間
NSFileManager(單例)
1.判斷文件/文件夾 是否存在 (fileExistsAtPath:文件的絕對(duì)路徑/文件夾的絕對(duì)路徑)
2.判斷 一個(gè)文件是否存在, 并且判斷 它是不是 一個(gè)文件夾 (fileExistsAtPath:isDirectory)
3.獲取文件 或 文件夾的屬性 (attributesOfItemAtPath:error)
4. 獲取文件夾中所有的文件 (contentsOfDirectoryAtPath:從那個(gè)文件夾里面獲取所有的文件 error)
5. 獲取文件夾中所有的文件夾 不包含子文件(subpathsAtPath:文件夾路徑) (subpathsOfDirectoryAtPath)
文件操作 <1>
6.文件拷貝 (copyItemAtPath:toPath:error)
7. 移動(dòng)(剪切) (moveItemAtPath:toPath:error)
8.刪除 (removeItemAtPath:error)
文件操作 <2>
10.創(chuàng)建文件夾 (createDirectoryAtPath:withIntermediateDirectories:attributes)
11.創(chuàng)建文件 (createFileAtPath:contents:attributes)
*/
pragma mark 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#pragma mark main函數(shù)
int main(int argc, const char * argv[])
{
#pragma mark 1.文件管理 NSFileManager(單例)
/**
單例 : 永遠(yuǎn)創(chuàng)建出來(lái) 就是一個(gè)對(duì)象
被全局共享 / 無(wú)論獲取多少次 或者 是創(chuàng)建多少次
操作的都是同一個(gè)對(duì)象 都是存儲(chǔ)同一塊的存儲(chǔ)空間
*/
NSFileManager *fm1 = [NSFileManager defaultManager];
NSFileManager *fm2 = [NSFileManager defaultManager];
NSLog(@"%p %p",fm1,fm2);
#pragma mark 返回的都是 bool 如果返回1 說(shuō)明是可讀敛惊、可寫等等這些狀態(tài)
NSFileManager *manager = [NSFileManager defaultManager];
#warning 1.判斷文件/文件夾 是否存在 (fileExistsAtPath)
// BOOL flag = [manager fileExistsAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾"]; // 文件夾
BOOL flag = [manager fileExistsAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾/abc.txt"]; // 文件
NSLog(@"flag = %i",flag);
#warning 2.判斷 一個(gè)文件是否存在, 并且判斷 它是不是 一個(gè)文件夾 (fileExistsAtPath:isDirectory)
/**
注意: 改方法的返回值 是 說(shuō)明 傳入的路徑對(duì)應(yīng)的文件 或文件夾 是否存在
isDirectory參數(shù) :用于保存 判斷結(jié)構(gòu)的,
如果是一個(gè)目錄,那么就會(huì)賦值YES,
如果不是 就賦值為NO
*/
BOOL dir = NO;
flag = [manager fileExistsAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾/abc.txt" isDirectory:&dir];
NSLog(@"2. flag = %i dir = %i",flag,dir);
#warning 3.獲取文件 或 文件夾的屬性 (attributesOfItemAtPath:error) 返回一個(gè)字典 里面有很多關(guān)于文件的屬性
NSDictionary *info = [manager attributesOfItemAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾/abc.txt" error:nil];
NSLog(@"3.info = %@",info);
#warning 4. 獲取文件夾中所有的文件 (contentsOfDirectoryAtPath:從那個(gè)文件夾里面獲取所有的文件 error)
/**
注意: contentsOfDirectoryAtPath 方法有一個(gè)弊端
只能獲取 當(dāng)前文件夾下所有的文件, 不能獲取子文件夾下面的文件
*/
NSArray *res = [manager contentsOfDirectoryAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾" error:nil];
NSLog(@"4.res %@",res);
#warning 5. 獲取文件夾中所有的文件夾 不包含子文件(subpathsAtPath:文件夾路徑) (subpathsOfDirectoryAtPath)
NSArray *res1 = [manager subpathsAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾"];
NSArray *res2 = [manager subpathsOfDirectoryAtPath:@"/Users/liyuhong165/Desktop/未命名文件夾" error:nil];
NSLog(@"5.res1 %@",res1);
NSLog(@"5.res2 %@",res2);
#pragma mark 2. 文件操作
#warning 6.文件拷貝 (copyItemAtPath:toPath:error)
// [manager copyItemAtURL:@"開始路徑" toURL:@"到其他地方的路徑" error:1];
#warning 7. 移動(dòng)(剪切) (moveItemAtPath:toPath:error)
#warning 8.刪除 (removeItemAtPath:error)
#pragma mark 3. 文件操作
#warning 10.創(chuàng)建文件夾 (createDirectoryAtPath:withIntermediateDirectories:attributes)
/**
createDirectoryAtPath : 告訴系統(tǒng)文件需要所創(chuàng)建的位置
withIntermediateDirectories : 如果指定一些的文件夾 有文件夾不存在, 是否自動(dòng)創(chuàng)建 不存在的文件夾
attributes: 指定創(chuàng)建的文件夾屬性 (no)
error: 是否創(chuàng)建成功a
// 注意 ??: 該方法只能創(chuàng)建文件夾,不能用于創(chuàng)建文件
是否會(huì)創(chuàng)建
*/
flag = [manager createDirectoryAtPath:@"/Users/liyuhong165/Desktop/age/lyh" withIntermediateDirectories:NO attributes:nil error:nil];
NSLog(@"10.flag = %hhd",flag);
#warning 11.創(chuàng)建文件 (createFileAtPath:contents:attributes)
/**
createFileAtPath : 職知道文件創(chuàng)建的 設(shè)置
contents : 文件出來(lái)的內(nèi)容的屬性
//注意 ??:該方法只能用于創(chuàng)建文件, 不能用于創(chuàng)建文件夾
*/
// NSData : 二進(jìn)制數(shù)據(jù)
NSString *str = @"呵呵,笑了";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[manager createFileAtPath:@"/Users/liyuhong165/Desktop/lyh/hehe.txt" contents:data attributes:nil];
/*
// 練習(xí): 要求計(jì)算一個(gè)文件夾中 所有文件的大小
// 注意: 如果通過(guò) attributesOfItemAtPath 方法直接獲取, 怎么獲取的文件夾的大小 不準(zhǔn)確
// 要 想實(shí)現(xiàn)計(jì)算一個(gè) 文件夾中 所有文件的大小必須 先到所有的文件, 然后在獲取所有文件的大小,然后在加到
#warning 3.判斷文件是否 可讀
#warning 4.判斷文件是否 可寫
#warning 5.判斷文件是否 可刪除
*/
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者