NSFileManager類主要對(duì)文件和目錄的操作(刪除粪狼、修改逞频、移動(dòng)纯衍、復(fù)制等等)。如果對(duì)文件的內(nèi)容更改苗胀,應(yīng)該使用NSFileHandle襟诸。所以說NSFileManager相對(duì)于NSFileHandle偏向于對(duì)文件的管理,而不是對(duì)內(nèi)容的操作基协。
NSFileManager管理文件
1. 創(chuàng)建文件
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *filePath = [path stringByAppendingPathComponent:@"text"];
if ([[NSFileManager defaultManager]createFileAtPath:filePath contents:nil attributes:nil]) {
NSLog(@"文件創(chuàng)建成功");
}else{
NSLog(@"文件創(chuàng)建失敗");
}
2. 文本寫入
NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *filePath = [path stringByAppendingPathComponent:@"text.txt"];
NSString *message = @"hello";
[[NSFileManager defaultManager]createFileAtPath:filePath contents:[message dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] attributes:nil];
3. 文本讀取
NSData *data = [[NSFileManager defaultManager]contentsAtPath:filePath];
NSString *text = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
4. 移動(dòng)文件路徑
[[NSFileManager defaultManager]moveItemAtPath:oldPath toPath:newPath error:NULL];
5. 復(fù)制文件
[NSFileManager defaultManager]copyItemAtPath:path toPath:newPath error:NULL];
6. 比較兩個(gè)文件的內(nèi)容
- (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2;
7. 文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
8. 刪除文件
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **) error;
9. 獲取文件大小
獲得文件的屬性字典
NSDictionary *attrDic = [[NSFileManager defaultManager] attributesOfItemAtpath:sourcePath error:nil];
NSNumber *fileSize = [attrDic objectForKey:NSFileSize];
10. 測(cè)試文件是否存在歌亲,且是否能執(zhí)行讀操作
-(BOOL)isReadablefileAtPath:path;
11. 測(cè)試文件是否存在澜驮,且是否能執(zhí)行寫操作
-(BOOL)isWritablefileAtPath:path
附錄: 用C語言獲取文件的大小
int getFileSizeFromPath(char * path){ FILE * file; int fileSizeBytes = 0; file = fopen(path,"r"); if(file>0){ fseek(file, 0, SEEK_END); fileSizeBytes = ftell(file); fseek(file, 0, SEEK_SET); fclose(file); } return fileSizeBytes; }
NSFileManager管理目錄
1. 獲取當(dāng)前目錄
-(NSString *)currentDirectoryPath
2. 更改當(dāng)前目錄
-(BOOL)changeCurrentDirectoryPath:path
3. 復(fù)制目錄結(jié)構(gòu)陷揪,to不能已經(jīng)存在
-(BOOL)copyPath:from toPath:to handler:handler
4. 創(chuàng)建目錄
-(BOOL)createDirectoryAtPath:path attributes:attr
5. 測(cè)試文件是否為目錄 (flag存儲(chǔ)結(jié)構(gòu)yes/no)
-(BOOL)fileExistsAtPath:path isDirectory:(BOOL *)flag
6. 列出目錄的內(nèi)容
-(NSArray *)contentsOfDirectoryAtPath:path
7. 枚舉目錄的內(nèi)容
-(NSDirectoryEnumerator *)enumeratorAtPath:path
8. 刪除空目錄
-(BOOL)removeFileAtPath:path handler:handler
9. 重命名或移動(dòng)一個(gè)目錄,to不能是已經(jīng)存在的
-(BOOL)movePath:from toPath:to handler:handler