>相对路径:不以斜线开头的路径都是相对路径。比如,abc.m代表的就是当前路径吓得abc.m文件,再如:codes/Test.m代表当前路径下codes目录下的Test.m文件。相对路径要以“当前路径”为基础路径,随着当前路径的不同,同一个相对路径实际代表的文件可能发生变化,在终端窗口输入pwd命令,即可看到当前路径 >绝对路径:以斜线(代表根目录)开头的路径就是绝对路径,绝对路径是唯一的,他代表的文件或者目录总是固定的。比如:/User/abc,该目录代表更目录下Uses目录下的abc子目录。 除此之外,在Mac OS X 中还包括如下几个特殊的路径。 1、~:代表当前用户的Home目录。比如,当前用户为abc,那么“~”就代表/Users/abc;还可以写成~abc。 2、.:代表当前目录 3、..:代表当前了目录的上一级目录
1、访问文件属性和内容:
// // main.m // NSFileManager // // Created by xxt-imac on 16/2/3. // Copyright © 2016年 xxt-imac. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... //访问文件属性和内容 NSFileManager *fm = [NSFileManager defaultManager]; // 将输出1 说明为真 NSLog(@"NSFileManager是否存在:%d",[fm fileExistsAtPath:@"NSFileManager"]); BOOL isDir; NSLog(@"NSFileManager:是否存在%d",[fm fileExistsAtPath:@"NSFileManager" isDirectory:&isDir]); //将会输出0 说明为假 NSLog(@"NSFileManager是否为目录:%d",isDir); //将会输出1 NSLog(@"NSFileManager是可读文件:%d",[fm isReadableFileAtPath:@"NSFileManager"]); //将会输出1 NSLog(@"NSFileManager是否为可写文件:%d",[fm isWritableFileAtPath:@"NSFileManager"]); //将会输出0 NSLog(@"NSFileManager是否为可执行性文件:%d",[fm isExecutableFileAtPath:@"NSFileManager"]); //将会输出1 NSLog(@"NSFileManager是否为可删除文件:%d",[fm isDeletableFileAtPath:@"NSFileManager"]); //获取NSFileManagerTest.m文件所在的路径 NSArray *array = [fm componentsToDisplayForPath:@"NSFileManager"]; NSLog(@"--NSFileManagerTest.m所在路径的完整路径组件为:--"); for (NSObject * ele in array) { NSLog(@"%@,",ele); } //获取文件的相关属性 NSDictionary *attrs = [fm attributesOfItemAtPath:@"NSFileManager" error:nil]; //获取文件的属性的详情 NSLog(@"NSFileManager的创建时间:%@",[attrs fileCreationDate]); NSLog(@"NSFileManager的属主账户:%@",[attrs fileOwnerAccountName]); NSLog(@"NSFileManager:的文件大小%llu",[attrs fileSize]); //直接获取文件内容 NSData *data = [fm contentsAtPath:@"NSFileManager"]; //直接将NSdata的数据用UTF-8的格式转换字符串 NSString *content = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"----------输出文件内容-----"); NSLog(@"%@",content); } return 0; }输出:
2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否存在:1 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager:是否存在1 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为目录:0 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是可读文件:1 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可写文件:1 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可执行性文件:1 2016-02-03 09:55:35.383 NSFileManager[1074:422794] NSFileManager是否为可删除文件:1 2016-02-03 09:55:37.197 NSFileManager[1074:422794] --NSFileManagerTest.m所在路径的完整路径组件为:-- 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Macintosh HD, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] 用户, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] xxt, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] 资源库, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Developer, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Xcode, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] DerivedData, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] NSFileManager-fszedtoibnvnrablwjwjlukdpkfx, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Build, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Products, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] Debug, 2016-02-03 09:55:37.198 NSFileManager[1074:422794] NSFileManager, 2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager的创建时间:2016-02-03 01:55:33 +0000 2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager的属主账户:xxt 2016-02-03 09:55:37.199 NSFileManager[1074:422794] NSFileManager:的文件大小23984 2016-02-03 09:55:37.199 NSFileManager[1074:422794] ----------输出文件内容----- 2016-02-03 09:55:37.199 NSFileManager[1074:422794] (null) Program ended with exit code: 0
NSFileManager为创建,山粗,移动,复制文件或者目录提供了许多方法。有根据路径进行操作的,还有用URL进行操作的,这里我就拿路径举例子。
//创建目录 [fm createDirectoryAtPath:@"lyx/abc" //该参数指定如果父目录不存在,则创建父目录 withIntermediateDirectories:YES attributes:nil error:nil]; NSString *contentt = @"我要好好学习"; //创建一份文件 [fm createFileAtPath:@"hahahah.txt" contents:[contentt dataUsingEncoding:NSUTF8StringEncoding] attributes:nil]; //复制一份新文件 [fm copyItemAtPath:@"hahahah.txt" toPath:@"copy.txt" error:nil];
3、查看目录包含的内容
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSFileManager *fm = [NSFileManager defaultManager]; //获取指定目录下的所有文件和文件夹 NSArray *array = [fm contentsOfDirectoryAtPath:@"." error:nil]; for (NSString * item in array) { NSLog(@"=%@=",item); } //获取指定目录下所有文件和文件夹对应的枚举器 NSDirectoryEnumerator *dirEnum = [fm enumeratorAtPath:@"."]; NSString *file; //枚举dirEnum中包含的每个文件 while (file = [dirEnum nextObject]) { //如果该文件的文件名是以.m结尾 if ([[file pathExtension] isEqualToString:@"m"]) { //直接读取文件内容 NSData *data = [fm contentsAtPath:file ]; //直接将NSData的数据用UTF-8的格式转换字符串 NSString *content = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"----------------输出文件内容---------------"); NSLog(@"%@",content); } } //获取当前目录下的所有子目录 // NSArray *subArr = [fm subpathsOfDirectoryAtPath:@"." error:nil]; //这两个方法基本一样,所以留一个就行 NSArray *subArr = [fm subpathsAtPath:@"."]; for (NSString *item in subArr) { NSLog(@"%@",item); } } return 0; }