前言
- NSFileManager 是 Foundation 框架中用来管理和操作文件、目录等文件系统相关联内容的类。
1、路径操作
复制
NSFileManager *nfManager = [NSFileManager defaultManager];
NSURL *folderUrl = [NSURL URLWithString:[NSHomeDirectory() stringByAppendingString:@"/Desktop/testFolder"]];
NSURL *filerUrl = [NSURL URLWithString:[NSHomeDirectory() stringByAppendingString:@"/Desktop/testFile.txt"]];
NSURL *srcUrl = [NSURL URLWithString:[NSHomeDirectory() stringByAppendingString:@"/Desktop/testFile.txt"]];
NSURL *dstUrl = [NSURL URLWithString:[NSHomeDirectory() stringByAppendingString:@"/Desktop/testFolder/testFile.txt"]];
NSError *errorInfo = nil;
BOOL bl1 = [nfManager createDirectoryAtPath:[folderUrl path] withIntermediateDirectories:YES attributes:nil error:&errorInfo];
BOOL bl2 = [nfManager createFileAtPath:[filerUrl path] contents:[@"北京欢迎您" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
BOOL bl3 = [nfManager copyItemAtPath:[srcUrl path] toPath:[dstUrl path] error:nil];
BOOL bl4 = [nfManager removeItemAtPath:[dstUrl path] error:nil];
BOOL bl5 = [nfManager moveItemAtPath:[srcUrl path] toPath:[dstUrl path] error:nil];
NSURL *url1 = [nfManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
NSArray *urlObjs = [nfManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *url2 = urlObjs[0];
NSArray *urls1 = [nfManager subpathsAtPath:[url1 path]];
NSArray *urls2 = [nfManager subpathsOfDirectoryAtPath:[url1 path] error:nil];
NSArray *contentsDir1 = [nfManager contentsOfDirectoryAtPath:[url1 path] error:nil];
NSArray *contentsDir2 = [nfManager contentsOfDirectoryAtURL:url1 includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsHiddenFiles error:nil];
NSDirectoryEnumerator *enumeratorDir1 = [nfManager enumeratorAtPath:[url1 path]];
NSDirectoryEnumerator *enumeratorDir2 = [nfManager enumeratorAtURL:url1 includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsHiddenFiles errorHandler:nil];
NSDirectoryEnumerator *dEnu = [nfManager enumeratorAtPath:[url1 path]];
id obj = nil;
while (obj = [dEnu nextObject]) {
NSLog(@"%@", obj);
}
NSString *displayName = [nfManager displayNameAtPath:[url1 path]];
NSDictionary *attributes = [nfManager attributesOfItemAtPath:[url1 path] error:nil];
NSData *data = [nfManager contentsAtPath:[[url1 path] stringByAppendingString:@"/test.txt"]];
NSString *currentPath = [nfManager currentDirectoryPath];
BOOL bl6 = [nfManager changeCurrentDirectoryPath:[NSHomeDirectory() stringByAppendingString:@"/Desktop/Debug"]];
NSString *tempPath = NSTemporaryDirectory();
NSString *homePath = NSHomeDirectory();
NSString *userHomePath = NSHomeDirectoryForUser(NSUserName());
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
BOOL bl8 = [nfManager createDirectoryAtPath:[NSHomeDirectory() stringByAppendingString:@"/Desktop/Debug1"] withIntermediateDirectories:YES attributes:nil error:nil];
BOOL result;
BOOL bl9 = [nfManager fileExistsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Desktop/test.txt"] isDirectory:&result];
BOOL bl10 = [@"../Desktop/test.txt" isAbsolutePath];
NSString *lastPath = [[NSHomeDirectory() stringByAppendingString:@"/Desktop"] lastPathComponent];
NSString *deleteLastPath = [[NSHomeDirectory() stringByAppendingString:@"/Desktop"] stringByDeletingLastPathComponent];
NSString *appendingPath = [[NSHomeDirectory() stringByAppendingString:@"/Desktop"] stringByAppendingPathComponent:@"testFolder"];
NSArray *pathArray = [[NSHomeDirectory() stringByAppendingString:@"/Desktop"] pathComponents];
NSString *pathString = [NSString pathWithComponents:pathArray];
NSString *path1 = @"~/Desktop/test.txt";
NSString *mainPath = [path1 stringByExpandingTildeInPath];
NSString *path2 = @"~/../Debug";
NSString *appPath1 = [path2 stringByResolvingSymlinksInPath];
NSString *path3 = [NSString stringWithFormat:@"%@/../Debug", NSHomeDirectory()];
NSString *appPath2 = [path3 stringByStandardizingPath];
NSString *getExtension = [@"/Desktop/test.txt" pathExtension];
NSString *deleteExtension = [@"/Desktop/test.txt" stringByDeletingPathExtension];
NSString *appendingExtension = [@"/Desktop/test.txt" stringByAppendingPathExtension:@"doc"];
NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:filerUrl.path error:NULL];
long long fileSize = [dict[NSFileSize] longLongValue];
long long fileSize = [dict fileSize];
2、路径判断
NSFileManager *nfManager = [NSFileManager defaultManager];
NSURL *url1 = [nfManager URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:YES error:nil];
BOOL bl1 = [nfManager fileExistsAtPath:[url1 path]];
BOOL bl2 = [nfManager isReadableFileAtPath:[url1 path]];
BOOL bl3 = [nfManager isWritableFileAtPath:[url1 path]];
BOOL bl4 = [nfManager isExecutableFileAtPath:[url1 path]];
BOOL bl5 = [nfManager isDeletableFileAtPath:[url1 path]];
BOOL bl6 = [nfManager contentsEqualAtPath:[url1 path] andPath:[[url1 path] stringByAppendingString:@"/test.txt"]];
3、文件操作
NSURL *fileUrl = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0];
NSFileHandle *nfHandle = [NSFileHandle fileHandleForUpdatingAtPath:[[fileUrl path] stringByAppendingString:@"/test.txt"]];
NSFileHandle *nfHandle1 = [NSFileHandle fileHandleForReadingAtPath:[[fileUrl path] stringByAppendingString:@"/test.txt"]];
NSFileHandle *nfHandle2 = [NSFileHandle fileHandleForWritingAtPath:[[fileUrl path] stringByAppendingString:@"/test.txt"]];
unsigned long long offSetNum1 = [nfHandle offsetInFile];
unsigned long long offSetNum2 = [nfHandle seekToEndOfFile];
[nfHandle seekToFileOffset:0];
NSData *availableData = [nfHandle availableData];
NSData *data1 = [nfHandle readDataToEndOfFile];
NSData *data2 = [nfHandle readDataOfLength:10];
[nfHandle writeData:[@"你好" dataUsingEncoding:NSUTF8StringEncoding]];
[nfHandle closeFile];
NSFileManager *nfManager = [NSFileManager defaultManager];
NSString *filePath1 = [NSHomeDirectory() stringByAppendingString:@"/Desktop/file1.txt"];
NSString *filePath2 = [NSHomeDirectory() stringByAppendingString:@"/Desktop/file2.txt"];
[nfManager createFileAtPath:filePath1 contents:[@"北京欢迎您" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
[nfManager createFileAtPath:filePath2 contents:[@"北京欢迎" dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
BOOL bl = [nfManager contentsEqualAtPath:filePath1 andPath:filePath2];
4、其他问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix