>相对路径:不以斜线开头的路径都是相对路径。比如,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
2、创建,删除,移动,复制的操作
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;
}