【Demo 0023】FoundationKit 目录管理
一、NSFileManager 目录操作
1. 创建目录
createDirectoryAtPath:withIntermediateDirectories:nilerror
2. 更改当前目录
changeCurrentDirectoryPath:
3. 遍历目录
enumeratorAtPath: 此方法在遍历时会将子目录或文件全部会遍历到
contentsOfDirectoryAtPath:error 此方法仅遍历本目录下的目录和文件, 子目录下不会遍历
4. 判断是文件还是目录
fileExistsAtPath:string isDirectory: isDirectory返回结果,YES 表示为目录 NO 表示文件
5. 重命名或移动目录
moveItemAtPath:toPath:
6. 删除目录
removeItemAtPath: error:
7. 获取当前用户名
NSFullUserName()
NSUserName()
8. 获取Home目录
NSHomeDirectory());
NSHomeDirectoryForUser
9. 获取临时目录
NSTemporaryDirectory()
二、练习代码
NSFileManager* fm = [NSFileManagerdefaultManager];
[fm createDirectoryAtPath:@"test"withIntermediateDirectories:YESattributes:nilerror:nil];
NSString* currentDirectory;
if ([fm changeCurrentDirectoryPath:@"test"])
{
currentDirectory = [fm currentDirectoryPath];
NSLog(@"new current Directory: %@", currentDirectory);
}
// create directorys & files
NSArray* dirNames = [NSArray arrayWithObjects:@"test1", @"tests2", @"test3", nil];
NSArray* fileNames = [NSArrayarrayWithObjects:@"test1.txt", @"tests2.doc", @"test3.cpp", nil];
if ([dirNames count] == [fileNames count])
{
for (int ii = 0; ii < [dirNames count]; ii++)
{
[fm createDirectoryAtPath:[dirNames objectAtIndex:ii] withIntermediateDirectories:YESattributes:nilerror:nil];
[fm changeCurrentDirectoryPath:[dirNames objectAtIndex:ii]];
[fm createFileAtPath:[fileNames objectAtIndex:ii] contents:nilattributes:nil];
[fm changeCurrentDirectoryPath:currentDirectory];
}
}
// enumerator directory
NSString* path = NULL;
BOOL isDirectory = NO;
NSDirectoryEnumerator* dirEnum = [fm enumeratorAtPath:currentDirectory];
NSLog(@"enumeratorAtPath enum directory:");
while (path = [dirEnum nextObject])
{
[fm fileExistsAtPath:path isDirectory:&isDirectory];
if (isDirectory)
{
NSLog(@"%@ dir", path);
} else {
NSLog(@"%@", path);
}
}
NSLog(@"contentsOfDirectoryAtPath enum directory:");
NSArray* content = [fm contentsOfDirectoryAtPath:currentDirectory error:nil];
for (NSString* string in content) {
[fm fileExistsAtPath:string isDirectory:&isDirectory];
NSLog(@"%@ %@", string, isDirectory ? @"dir" : @"");
}
// rename directory
[fm moveItemAtPath:@"test1"toPath:@"ztercel"error:nil];
// remove directory
if ([fm removeItemAtPath:currentDirectory error:nil])
{
NSLog(@"remove successfully");
}
NSLog(@"full User Name: %@", NSFullUserName());
NSLog(@"user Name: %@", NSUserName());
NSLog(@"Home directory: %@", NSHomeDirectory());
NSLog(@"Home directory for user: %@", NSHomeDirectoryForUser(@"ztercel"));
NSLog(@"temp directory: %@", NSTemporaryDirectory());
}
浙公网安备 33010602011771号