1. 程式人生 > >ObjectiveC(12)_NSFileManager

ObjectiveC(12)_NSFileManager

常用方法

  • 獲取使用者目錄
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");