ObjectiveC(12)_NSFileManager
阿新 • • 發佈:2018-12-27
常用方法
- 獲取使用者目錄
NSString *homePath = NSHomeDirectory(); // 獲取使用者目錄/Users/renzhongrui
NSLog(@"home path:%@",homePath);
NSFileManager常用方法
NSFileManager
可以實現對檔案和資料夾的建立、刪除、複製、拷貝、移動。這個類是以單例模式建立的。
- 建立
NSFileManager
NSFileManager *fm = [NSFileManager defaultManager];
- 判斷檔案是否存在
BOOL isExists = [fm fileExistsAtPath:newFile];
NSLog(@"判斷檔案是否存在:%@",isExists?@"YES":@"NO");
- 判斷路徑是否存在並且判斷路徑是檔案還是資料夾
BOOL isFile;
flag = [fm fileExistsAtPath:newFile isDirectory:&isFile];
if (flag) {
NSLog(@"路徑存在檔案或者資料夾");
if (isFile) {
NSLog(@"是資料夾路徑"); // true是資料夾
}else{
NSLog(@"是檔案路徑"); // false是檔案
}
} else {
NSLog(@"檔案或者資料夾不存在");
}
- 判斷檔案或資料夾是否可讀
flag = [fm isReadableFileAtPath:newFile];
NSLog(@"判斷檔案是否可讀:%@",flag? @"yes":@"NO");
- 判斷檔案或資料夾是否可寫
flag = [fm isWritableFileAtPath:newFile];
NSLog(@"判斷檔案是否可寫:%@",flag? @"yes": @"NO");
- 判斷檔案或資料夾是否可刪除
flag = [fm isDeletableFileAtPath:newFile];
NSLog(@"判斷檔案是否可刪除:%@",flag? @"yes":@"NO");
- 獲取檔案的屬性資訊
NSDictionary *attrs = [fm attributesOfItemAtPath:newFile error:nil];
NSLog(@"獲取檔案的屬性資訊:%@",attrs);
NSLog(@"獲取檔案的大小:%@",attrs[NSFileSize]);
// 返回如下資訊
NSFileCreationDate = "2018-10-05 06:24:44 +0000"; // 0時區,文化的建立日期
NSFileExtensionHidden = 0; // 檔案字尾名是否隱藏
NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName = staff;
NSFileHFSCreatorCode = 0;
NSFileHFSTypeCode = 0;
NSFileModificationDate = "2018-10-05 06:24:44 +0000"; // 檔案修改日期
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = renzhongrui;
NSFilePosixPermissions = 420;
NSFileReferenceCount = 1;
NSFileSize = 11; // 檔案大小
NSFileSystemFileNumber = 2529943;
NSFileSystemNumber = 16777220;
NSFileType = NSFileTypeRegular;
- 獲取指定路徑下的所有的檔案和目錄,以及子目錄中的子檔案和目錄
NSString *filesPath = [homePath stringByAppendingString:@"/workspace/ioswork/OCSpace/016_iOS_NSFile"];
NSArray *files = [fm subpathsAtPath:filesPath];
NSLog(@"獲取指定路徑下的所有的檔案和目錄:%@",files);
- 獲取指定路徑下的子檔案和子目錄,不包括子目錄下的檔案
NSArray *files2 = [fm contentsOfDirectoryAtPath:filesPath error:nil];
NSLog(@"獲取指定路徑下的所有子檔案和子目錄:%@",files2);
- 建立檔案並寫入內容
NSFileManager *fm = [NSFileManager defaultManager];
NSString *newFile = [homePath stringByAppendingPathComponent:@"/workspace/ioswork/OCSpace/016_iOS_NSFile/016_iOS_NSFile/new.txt"];
BOOL flag =[fm createFileAtPath:newFile contents:[@"create file" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSLog(@"建立新檔案:%@",flag?@"yes":@"NO");
- 建立目錄
NSString *newDir = [homePath stringByAppendingString:@"/workspace/ioswork/OCSpace/016_iOS_NSFile/016_iOS_NSFile/test/"];
// 建立新目錄,如果已經存在則會返回false
flag = [fm createDirectoryAtPath:newDir withIntermediateDirectories:false attributes:nil error:nil];
// withIntermediateDirectories 是否一路建立,設為true,不存在的父級目錄也建立,否則就返回失敗。
NSLog(@"建立新目錄:%@",flag?@"yes":@"NO");
- 拷貝檔案並重命名
flag = [fm copyItemAtPath:newFile toPath:[newDir stringByAppendingString:@"new1.txt"] error:nil];
NSLog(@"拷貝檔案:%@",flag?@"yes":@"no");
- 移動檔案並重命名
flag = [fm moveItemAtPath:newFile toPath:[newDir stringByAppendingString:@"new2.txt"] error:nil];
NSLog(@"移動檔案:%@",flag?@"yes":@"no");
- 刪除檔案或目錄
flag = [fm removeItemAtPath:newDir error:nil];
NSLog(@"刪除檔案:%@",flag?@"yes":@"no");