ObjectiveC(12)_NSFileManager

版权声明:本博客主要记录学习笔记和遇到的一些问题解决方案,转载请注明出处! https://blog.csdn.net/u010982507/article/details/82939980

常用方法

  • 获取用户目录
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");

猜你喜欢

转载自blog.csdn.net/u010982507/article/details/82939980